首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?该怎么解决

2012-03-27 
子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?waitpid第三个参数什么意思?子进程exit是退出,用

子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?
waitpid第三个参数什么意思?子进程exit是退出,用return什么作用?

C/C++ code
#include <stdio.h>#include <sys/wait.h>#include <unistd.h>#include <stdlib.h>int main(){    int pid1 = fork();    int pid2;    if(pid1>0) pid2 = fork();    if(pid1==0){//子进程一        printf("子进程一开始运行,马上睡5s\n");        sleep(5);        exit(123);    }    if(pid2==0){//子进程二        printf("子进程二开始运行,马上睡3s\n");        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("子进程一的返回码:%d\n", WEXITSTATUS(r1));    }    if(WIFEXITED(r2)){        printf("子进程一的返回码:%d\n", WEXITSTATUS(r2));    }}


[解决办法]
你也可以使用别的选项,比如
waitpid( , , WNOHANG);

即使它的子进程当前还没有结束,这个waitpid也会立即返回,而不是阻塞等待

热点排行
Bad Request.