wait()系统调用分别演示在父子进程

Posted lhyzdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wait()系统调用分别演示在父子进程相关的知识,希望对你有一定的参考价值。

废话不多说开代码

在父进程调用wait()

#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
int main(int argc,char *argv[]){
int rc=fork();
if(rc==0){
printf("i am child pid=%d
",(int)getpid());
}else{

int wc=wait(NULL);
printf("i am father wc=%d",wc);

}



return 0;
}



[root@localhost codec5]# ./t5
i am child pid=3243
i am father wc=3243[root@localhost codec5]# cat t5.c

在父进程调用  成功返回子进程的id号

#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
int main(int argc,char *argv[]){
/*int rc=fork();
if(rc==0){
printf("i am child pid=%d
",(int)getpid());
}else{
*/
int wc=wait(NULL);
printf("i am father wc=%d",wc);





return 0;
}



[root@localhost codec5]# ./t5
i am father wc=-1

在父进程调用 wait 失败返回 -1

 

 

在子进程里调用wait()

由于子进程并没有创建再创建子进程所以返回值是-1

#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
int main(int argc,char *argv[]){
int rc=fork();
if(rc==0){
int  wc=wait(NULL);
printf("i am child pid=%d,wc=%d
",(int)getpid(),wc);
}else{


printf("i am father ");
}




return 0;
}





[root@localhost codec5]# ./t5

i am father [root@localhost codec5]# i am child pid=3337,wc=-1

 


以上是关于wait()系统调用分别演示在父子进程的主要内容,如果未能解决你的问题,请参考以下文章

20165322 第七周 mybash 的实现

C程序演示产生僵死进程的过程

C库函数和系统调用的区别

【linux c】子进程结束了,父进程还在,用ps -ef查看,子进程变成僵尸进程了。

linux父子进程执行问题

fork,wait和exec