C静态变量和分叉过程

时间:2014-02-08 22:26:33

标签: c concurrency process static global-variables

假设我有一个全局初始化为零的静态变量,并且我有一个分叉的进程。现在假设在这个父进程中,静态变量被设置为值10.我在子进程中注意到静态变量仍然为零。这种行为是合理的,因为我们没有在子进程中更改此变量的值。

如何让子节点中的静态变量与父节点中此变量的值相同?也就是说,子项的静态变量副本也设置为值10。

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

简短的回答是,对于静态变量,您不能,因为无法共享分配静态的内存区域。相反,您可以创建共享内存区域来执行此操作。执行此操作的一种方法是mmap MAP_ANONYMOUSMAP_SHARED。可以把它想象malloc(),除了页面大小的单位。另一种方法是使用shm_open()