当前位置: 技术问答>linux和unix
在一个进程中我定义了几个全局变量,然后我又fork了几个子进程,子进程中是否可以各自对全局变量进行修改,如果各子进程都对其进行修改,
来源: 互联网 发布时间:2015-03-29
本文导语: 在一个进程中我定义了几个全局变量,然后我又fork了几个子进程,子进程中是否可以各自对全局变量进行修改,如果各子进程都对其进行修改,那最后全局变量会取哪个值呢? | 子进程继承...
在一个进程中我定义了几个全局变量,然后我又fork了几个子进程,子进程中是否可以各自对全局变量进行修改,如果各子进程都对其进行修改,那最后全局变量会取哪个值呢?
|
子进程继承父进程的 全局变量,而且是以 复制的形式完成,所以子进程修改后的 全局变量
只对自己 和 自己的子进程有影响。
只对自己 和 自己的子进程有影响。
|
父子进程不共享这些全局变量,也就是说:父进程中对全局变量的修改不影响子进程中的全局变量,同理,子进程也不影响父进程的。
|
在父进程 fork 子进程时,有一个参数决定子进程是否与父进程共享空间。
如果是,全局变量的最终取值为最后一个进程对它设置的值。如果没有特别规划进程间的执行顺序,则不可预测全局变量的最终取值。
如果是,全局变量的最终取值为最后一个进程对它设置的值。如果没有特别规划进程间的执行顺序,则不可预测全局变量的最终取值。
|
也许你可以这样:
在子进程中向父进程的 kill 一个信号,在父进程的信号处理函数中修改全局变量
在子进程中向父进程的 kill 一个信号,在父进程的信号处理函数中修改全局变量