我是C编程的新手,虽然我做了很多其他类型的编程.
我想知道是否有人可以向我解释为什么这个程序输出10.
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int value = 10;
int main()
{
pid_t pid;
pid = fork();
if(pid == 0){
value += 10;
}
else if(pid > 0){
wait(NULL);
printf("parent: value = %d\n", value); //Line A
exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道输出是"parent:value = 10".谁知道为什么?
谢谢!
Sta*_*key 16
fork创建两个进程("父"和"子").在您的示例中,每个进程都有不同的pid值.子进程的pid为0.父进程有一个子操作系统pid的pid(由操作系统分配).
在您的示例中,每个进程value在其内存中都有自己的进程.它们不共享内存(就像你认为它们应该通过你的问题.)如果你改变一个进程(if的第一部分),它将不会反映在第二个进程中(if的第二部分).
编辑:解释pid的值.