status
的值未从子级正确返回到父级进程。
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<string.h>
#define BUF_SIZE 200
int main(void){
pid_t pid;
int status=6;
char buf[BUF_SIZE];
pid=fork();
if(pid){
sprintf(buf,"Value in parent process is %d\n",status);
write(1,buf,strlen(buf));
wait(&status);
sprintf(buf,"Value returned from child process is %d\n",status);
write(1,buf,strlen(buf));
}
else if(pid==0){
status++;
sprintf(buf,"Returning %d..\n",status);
write(1,buf,strlen(buf));
exit(status);
}
return 0;
}
代码的输出为:
Value in parent process is 6
Returning 7..
Value returned from child process is 1792
1792
来自哪里?为什么此值不是7
? 最佳答案
因为手册页继续...
关于linux - 使用C中的exit()和wait()从子进程向父进程返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32284008/