`
liukexiong
  • 浏览: 84139 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

如何创建某个进程的多个子进程?(方式二)

 
阅读更多

   在前面,我们是采取递归方式实现的,现在我们采取另一种方式创建某个进程的多个子进程

   代码如下所示:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

/*
 * 创建指定数目的子进程
 */
void createsubprocess(int num)
{
	pid_t pid;
	int i;
	for(i=0;i<num;i++)
	{
		pid=fork();
		//子进程或创建进程失败均退出
		if(pid==0||pid==-1)
		{
			break;
		}
	}
	if(pid==-1)
	{
		perror("fail to fork!\n");
		exit(1);
	}
	else if(pid==0)
	{
		printf("子进程id=%d,其对应的父进程id=%d\n",getpid(),getppid());
		exit(0);
	}
	else
	{
		printf("父进程id=%d\n",getpid());
		exit(0);
	}
}

int main()
{
	int num=3;
	createsubprocess(num);
	return 0;
}

  

    运行结果如下所示:
  
 

  • 大小: 16.4 KB
0
2
分享到:
评论

相关推荐

    操作系统课程实验.rar

    由父进程创建一个管道,然后再创建 3 个子进程,并由这三个子进程利用管道与父进程 之间进行通信:子进程发送信息,父进程等三个子进程全部发完消息后再接收信息。通信的 具体内容可根据自己的需要随意设计,要求能...

    C#写的WinForm源码之清影法宝,自动清除PPS的子进程与注册表信息

    影子进程是我起的名字,就是某个程序启动以后,会启动另外一个子程序,当主程序被你关闭后那个子程序依然在运行着。影子进程象影子一样随主程序启动而启动,但并不随主程序退出而退出,而且关键是这类影子进程很耗...

    如何在C# 中查找或结束程序域中的主、子进程

    当启动一个进程后,获得这个进程信息Process,然后其内部在某个时刻启动了一个子进程,这个时候就涉及程序域和进程树的概念。当我们通过非正常操作的方式结束前面获得的进程信息Process时(如Kill掉),可能并没有...

    深入理解apahce的工作模式perfork、worker

    prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下...

    操作系统实验报告

    要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列...

    Python子进程subpocess原理及用法解析

    python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样。 一:如何理解? 我们可能的理解:多开一个进程运行某个python函数(如果只想实现这个功能,请使用...

    易语言高强度防破解模块

    子程序 莫超强检测模式二快速, , 公开, 此为快速版检测,可以防止OD,WPE,等直接用附加到程序方式 无返回值,如果测试可填写信息框来测试是否有效支持WIn764和32和所有系统 .参数 跳过进程名称, 文本型, 可空, 进程名称...

    操作系统实验

    (l)进程的创建:编写一段程序,使用系统调用fork()创建两个或多个子进程。当此程序运行时,在系统中有一个父进程和其余为子进程在活动。 (2)进程的控制:在程序中使用系统调用lockf()来给每一个进程加锁,实现进程...

    Redis的持久化方案详解

    Redis支持RDB与AOF两种持久化机制,持久化可以避免因进程异常退出或down机导致的数据丢失问题,在下次重启时能利用... bgsave, 在命令行执行bgsave命令,将通过fork一个子进程以异步的方式创建rdb文件保存快照,除了fo

    Visual C++开发经验技巧宝典(第9章)

    0557 在程序中调用一个子进程直到其结束 371 0558 提取并保存应用程序图标 371 9.5 系统工具 373 0559 为程序添加快捷方式 373 0560 用列表显示系统正在运行的程序 375 0561 如何获得毫秒级时间 376 ...

    Visual C++开发经验技巧宝典(第9章)—1

    0557 在程序中调用一个子进程直到其结束 371 0558 提取并保存应用程序图标 371 9.5 系统工具 373 0559 为程序添加快捷方式 373 0560 用列表显示系统正在运行的程序 375 0561 如何获得毫秒级时间 376 ...

    计算机软件测试

    3、如果监测UNIX 机器,在被监测的机器需要安装监测Unix 的进程 4、让开发人员帮助我们准备测试数据或他们写相关的文档我们来准备数据 5、让开发人员做一个恢复数据的脚本,以便于我们每次测试的时候都能够有一个...

    CISCO 技术大集合

    Router1的E0的网络地址为192.1.0.128,掩码为255.255.255.192, Router2的E0的网络地址为192.1.0.64,掩码为255.255.255.192,这样就将一个C类网络地址分配给了二个网,既划分了二个子网,起到了节约地址的作用。...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    修改当前用户(方式二) 修改其他用户(方式一) 修改其他用户(方式二) 3. 用户禁用与启用 说明:Oracle中想要禁用或启用一个账户也同样是使用alter user 命令来完成,只是语法和修改密码有所不同。 用法: 禁用 ...

    Linux管理员指南

    令which 83 6.4.15 查找命令的保存位置命令whereis 83 6.4.16 释放...某个进程发送消息命令kill 87 6.6 其他工具 88 6.6.1 显示系统名称命令uname 88 6.6.2 查看用户命令who 88 6.6.3 改变用户身份...

    关于rfc的文档组织:中国互动出版网

    因为在某些操作系统上,服务器正在执行的时候可能不允许更新窗口尺寸信息,所以服务器可能在接受最初的窗口尺寸后发送一个DON'T NAWS给客户端以阻止更多的子协商。一个协商循环将不会形成下面这些规则。  子协商...

    经典SQL语句大全

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    数据库操作语句大全(sql)

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' +...

    sql经典语句一部分

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

Global site tag (gtag.js) - Google Analytics