Linux中建立新的进程,父进程等待子进程的退出
2015-05-10 00:01
281 查看
fork函数
一个进程可以调用fork()来复制自己,复制的时候这两个进程完全相同,之后便分道扬镳。头文件:
#include<unistd.h>
函数原型:
pid_t result =fork(void)
返回值:
如果错误,返回-1
返回0到子进程
返回子进程的pid到父亲进程
根据不同的返回值,可以判断当前运行的是子进程还是父进程
父进程怎么等待子进程退出呢?
父进程调用wait函数等待子进程退出头文件:
# include <sys/types. h> # include <sys/wait. h>
函数原型:
pid_t result = wait(int* statusptr)
参数:子进程的运行结果
返回值:错误的话返回-1,正常返回结束进程(这里就是子进程)的进程id
代码
#include <stdio.h> #define DELAY 2 int main() { int newpid; void child_code(); void parent_code(); printf("befor: mypid is %d\n",getpid()); if((newpid = fork()) == -1) /*复制出一个子进程*/ perror("fork"); else if(newpid == 0) /*子进程的fork返回0*/ child_code(DELAY); else /*父进程*/ parent_code(newpid); return 0; } /*子进程执行完后调用exit()*/ void child_code(int delay) { printf("child %d here. Will sleep for %d seconds\n",getpid(),delay); sleep(delay); printf("child done. About to exit\n"); exit(17); } /*父进程等待子进程的exit,并接收wait()的返回值(即子进程的pid)*/ void parent_code(int childpid) { int wait_rv; /*return value from wait()*/ wait_rv = wait(NULL); printf("done waiting for %d. Wait returned:%d\n",childpid,wait_rv); }
截图
参考文献《Unix/Linux编程实践教程》
相关文章推荐
- linux创建进程和等待进程退出
- Linux退出进程exit/_exit和等待子进程退出wait函数分析
- linux创建进程和等待进程退出
- linux下的wait()实现等待一个子进程和所有子进程退出
- linux 让父进程等待并检查子进程的退出状态
- Linux 进程控制——等待队列详解
- Linux 等待进程结束 wait() 和 waitpid()
- 进程的创建,等待,退出,
- Linux系统编程——进程的控制:结束进程、等待进程结束
- Linux下进程的建立
- linux 遭遇SIGPIPE信号,导致进程退出的问题
- 浅谈Linux进程等待
- linux 进程的创建 和退出回收
- Unix/Linux下退出帐户/关闭终端之后继续运行相应的进程
- linux之进程等待
- Linux之进程等待
- 创建进程并等待其退出
- 信号退出【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
- Linux下进程退出的几种形式
- [Linux进程]使用waitpid函数退出进程