我有将数字增加一的程序。

int ile=0;

pid_t pid = fork();

if(pid != 0) {
  ile++;
  printf("%d", ile);  //I get 1
}
else {
  printf("%d", ile);  //I get 0
}


为什么我得到0?我必须得到1。

最佳答案

fork ()使用其自己的地址空间创建一个新进程。这些不是共享公共地址空间的线程。如果希望后一种行为,请查看类似pthreads的内容。

ile++之后父进程(在您的情况下为fork())中的更改在子进程中将不可见。

关于c - 为什么在 fork 后我得到0而不是1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20402511/

10-11 07:31