这是我第一次使用fork,我希望父进程计算总和,并且子进程为父进程中的总和提供输入,反之亦然,但我无法做到,他们工作作为两个独立的过程!!我怎样才能做到这一点, 当我输入1和2时,父母必须将总和返回为3
int main() {
int num1 = 0, num2 = 0, sum = 0;
pid_t pid;
pid = fork();
if(pid == -1)
perror("fork");
if(pid > 1)
{
wait(NULL);
printf("sum:%d\n",sum = num1 + num2);
}
if(!pid)
{
printf("Enter two number\n");
scanf("%d %d", &num1, &num2);
}
}
答案 0 :(得分:2)
一旦你分叉,每个进程都会获得自己的变量副本(至少从逻辑角度来看 - 请参阅copy-on-write以获取更多数据),因此你无法在fork之后更改内容并期望另一个看到这些变化的过程。
您需要使用某种进程间通信:
http://en.wikipedia.org/wiki/Inter-process_communication
您可能需要查看此问题以获取更多详细信息:
答案 1 :(得分:0)
如果你在程序中使用fork系统调用,它会创建另一个进程,你不能从一个进程返回到另一个进程(子进程到父进程),所以如果你想在两个进程之间使用fork系统调用方法进行通信使用未命名的管道(一种进程间通信的方法)