假设我有一个全局初始化为零的静态变量,并且我有一条分叉的进程。现在假设在这个父进程中,静态变量被设置为值10。我注意到在子进程中,静态变量仍然为零。这种行为是合理的,因为我们在子过程中没有改变这个变量的值。
如何使子级中的静态变量与父级中的该变量值相同?也就是说,静态变量的子副本也设置为值10。
谢谢,如果你需要更多信息,请告诉我。
简单的答案是,对于静态变量,你不能这样做,因为分配静态的内存区域不能共享。相反,您可以创建一个共享内存区域来执行此操作。一种方法是mmap
与MAP_ANONYMOUS
和MAP_SHARED
。把它想象成malloc()
,只是以页面大小为单位。另一种途径是使用shm_open()
。