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/

10-11 23:21
查看更多