C中的可变范围

时间:2011-03-14 06:02:07

标签: c variables

我有一个main()函数,在声明main()之前,我声明了全局变量。

然后在main()2进程内启动:1个子进程和1个父进程通过fork()。为什么父进程和子进程不能共享我声明的全局变量?处理这个问题的好方法是什么?谢谢。

2 个答案:

答案 0 :(得分:4)

当您fork()生成新流程时。复制fork 时的所有,但之后......没有任何共享。

那时你有两个选择:

  • 在两个流程之间保持管道畅通并传达变更
  • 将您的代码重写为多线程,您可以在其中访问相同的数据(使用锁)

答案 1 :(得分:0)

使用fork()可以创建一个具有单独内存空间的新进程。要在进程之间进行通信,您可以使用信号(使用kill())

如果要共享变量,请考虑使用线程(例如pthread.h)。然后,您可以使用事件或互斥锁进行线程同步。