利用fork创建子进程

创建如图的进程:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<wait.h> int main()
{
int pid=fork();//创建子进程 if(pid==)
{ printf("D:%d\t %d\n",getppid(),getpid());return ;//子进程结束
} int pid2=fork();//创建子进程
if(pid2==)
{
printf("C:%d\t %d\n",getppid(),getpid());waitpid(pid2,NULL,);return ;//子进程结束
}
int pid3=fork();
if(pid3==)//创建子进程
{
printf("B:%d\t %d\n",getppid(),getpid());return ;//子进程结束 }
printf("父进程id 当前进程id\n");
printf("A:%d\t %d\n",getppid(),getpid());
waitpid(pid,NULL,);waitpid(pid2,NULL,);waitpid(pid3,NULL,);//等待子进程结束;
return ;
}
结果如下:
父进程id 当前进程id
A:
D:
C:
B:

创建如图的进程:
#include<stdio.h>
#include<unistd.h>
#include<wait.h>
#include<stdlib.h>
int main()
{ int pid=fork();int pid3;
if(pid==)
{
printf("C:%d\t %d\n",getppid(),getpid());return ;
}
int pid2=fork();
if(pid2==)
{
pid3=fork();
if (pid3==)
{
printf("D:%d\t %d\n",getppid(),getpid());return ;
}
else
{
printf("B:%d\t %d\n",getppid(),getpid());return ;
}
} printf("父进程id 当前进程id\n");
printf("A:%d\t %d\n",getppid(),getpid());
waitpid(pid,NULL,);waitpid(pid2,NULL,);waitpid(pid3,NULL,);
return ; }
结果如下:
父进程id 当前进程id
A:
C:
B:
D:
利用fork创建子进程的更多相关文章
- Linux下利用fork()创建子进程并使父进程等待子进程结束
		int status; pid_t t = fork(); if(t){ waitpid(t, &status, 0); }else{ system("vi temp ... 
- Linux fork创建子进程
		1. pid_t fork(void); 功能:创建父子进程 参数:无 返回值:成功:在父进程中:返回值为子进程的PID 在子进程中:返回值为0 失败:-1 注意: 1)fork函数是用来创建进程的 ... 
- 2.1 进程控制之fork创建子进程
		fork()函数 目标:熟悉fork创建一个和多个子进程子线程 函数原型:pid_t fork(void); 返回值:成功返回:① 父进程返回子进程的ID(非负) ②子进程返回 0 : 失败返回-1. ... 
- 线程_互斥锁_Lock及fork创建子进程
		""" 创建锁 mutex = threading.Lock() 锁定 mutex.acquire([blocking]) 当blocking为True时,当前线程会阻塞 ... 
- fork()创建子进程
		fork()系统调用是Unix下以自身进程创建子进程的系统调用,一次调用,两次返回,如果返回是0,则是子进程,如果返回值>0,则是父进程(返回值是子进程的pid) 在fork()的调用处,整个父 ... 
- Python 使用 os.fork() 创建子进程
		Linux 操作系统提供了一个 fork() 函数用来创建子进程,这个函数很特殊,调用一次,返回两次,因为操作系统是将当前的进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回.子进程永 ... 
- exec族函数详解及循环创建子进程
		前言:之前也知道exec族函数,但没有完全掌握,昨天又重新学习了一遍,基本完全掌握了,还有一些父子进程和循环创建子进程的问题,还要介绍一下环境变量,今天分享一下. 一.环境变量 先介绍下环境的概念和特 ... 
- Nginx学习笔记(七) 创建子进程
		Nginx创建子进程 ngx_start_worker_processes位于Nginx_process_cycle.c中,主要的工作是创建子进程. 在Nginx中,master进程和worker进程 ... 
- [转载]Python模块学习 ---- subprocess 创建子进程
		[转自]http://blog.sciencenet.cn/blog-600900-499638.html 最近,我们老大要我写一个守护者程序,对服务器进程进行守护.如果服务器不幸挂掉了,守护者能即时 ... 
随机推荐
- ios7自定义返回按钮后,右滑返回功能失效解决方法
			-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开启ios右滑返回 if ([ ... 
- IntelliJ IDEA  调试技巧
			程序员的工作内容,有不少的时间是用在调试代码上.可以说不是在调试代码,就是即将调试代码. 掌握调试代码的一些技巧,在使用IDE提供的debugger时会快速定位问题的方式. 1.多线程调试 在多线程应 ... 
- java细节知识
			代码优化细节 (1)尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是fin ... 
- xtrabackup备份还原MySQL数据库
			mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的 ... 
- 小事牛刀之——python做文件对比
			使用python对比filename1和filenam2的差异,并将差异写入到filename3中. #!/usr/bin/env python # -*- coding: utf-8 -*- # @ ... 
- 把post请求的地址粘贴到浏览器地址栏敲回车报错405[Method Not Allowed]
			为什么把post请求的地址粘贴到浏览器地址栏敲回车会报405?原因:在浏览器地址栏敲回车,浏览器默认是以get方式发送请求,而你的请求是post,这样当然会报405了: 405:方法不允许,不支持ge ... 
- TypeError: Fetch argument None has invalid type <type 'NoneType'>
			(fetch, type(fetch)))TypeError: Fetch argument None has invalid type <type 'NoneType'> 我的解决方案是 ... 
- 工具类静态方法注入dao
			工具类里的一个静态方法需要调用dao查询数据库,用普通的spring注解注入一直报空指针异常,不能找到这个dao.参考的http://busing.iteye.com/blog/899322 的文章解 ... 
- java项目测试或者不使用request,如何获取webroot路径
			1.使用jdk中的方法,然后根据项目编译后的文件存在的位置,获取到classes目录,然后向上级查询获取String path = EngineTest.class.getResource(" ... 
- Aspose.word
			http://my.oschina.net/dancefires/blog/217858 
