当前位置: 技术问答>linux和unix
子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?
来源: 互联网 发布时间:2017-02-06
本文导语: waitpid第三个参数什么意思?子进程exit是退出,用return什么作用? #include #include #include #include int main() { int pid1 = fork(); int pid2; if(pid1>0) pid2 = fork(); if(pid1==0){//子进程一 printf("子进程一开始运行,马上睡5s...
waitpid第三个参数什么意思?子进程exit是退出,用return什么作用?
#include
#include
#include
#include
int main()
{
int pid1 = fork();
int pid2;
if(pid1>0) pid2 = fork();
if(pid1==0){//子进程一
printf("子进程一开始运行,马上睡5sn");
sleep(5);
exit(123);
}
if(pid2==0){//子进程二
printf("子进程二开始运行,马上睡3sn");
sleep(3);
exit(234);
}
//以下是父进程
printf("父进程开始等待子进程一n");
int r1 = 0;
waitpid(pid1,&r1,0);
printf("父进程开始等待子进程二n");
int r2 = 0;
waitpid(pid2,&r2,0);
if(WIFEXITED(r1)){
printf("子进程一的返回码:%dn", WEXITSTATUS(r1));
}
if(WIFEXITED(r2)){
printf("子进程一的返回码:%dn", WEXITSTATUS(r2));
}
}
|
你也可以使用别的选项,比如
waitpid( , , WNOHANG);
即使它的子进程当前还没有结束,这个waitpid也会立即返回,而不是阻塞等待
waitpid( , , WNOHANG);
即使它的子进程当前还没有结束,这个waitpid也会立即返回,而不是阻塞等待