【发布时间】:2015-11-23 21:07:29
【问题描述】:
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?
【问题讨论】: