waitpid函数使用示例如下:
process_fork2.c
#include<wait.h>
#include<stdio.h>
#include<sys/types.h>
int main()
{
pid_t pid = fork();
int stat = 0;
switch(pid)
{
case -1:
perror("fork failed");
exit(1);
break;
case 0:
printf("n");
execlp("ps","ps","au",0);
break;
default:
do
{
pid = waitpid(pid,&stat,WNOHANG);
if(pid==0)
{
printf("parent do something else.n");
sleep(1);
}
}while(pid==0);
printf("Child has finished:PID=%dn",pid);
printf("parent,ps donen");
break;
}
exit(0);
}
输出结果:

4.启动新进程三种方法的比较
1)system函数最简单,启动shell进程,并在shell进程中执行新的进程。
效率不高,system函数必须等待子进程返回才能接着执行。
2)exec系列函数用新进程替换掉原进程,但不会返回到原进程,除非调用失败。
该函数继承了许多原进程的特性,效率也较高。
3)fork函数,复制一个子进程,和父进程一模一样,但是拥有自己的内存空间。父子进程执行互不影响。需要注意僵尸子进程的问题。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持易采站长站!










