我在一个算法的并行实现上编程,它使用了非线程安全操作。因此,我使用fork()和POSIX共享内存,它工作得很好。现在问题来了。当子进程退出时,父进程动态分配的内存会发生什么情况?parents work // retrieve results from shared memory }
问题是,我不知道计算是从哪里调
我知道fork(),wait(),waitpid(),僵尸进程...我是通过阅读W. Richard Stevens这本非常好的书来理解他们的。如果我们不在parent中调用wait(),那么孩子在终止后就会变成僵尸……这是很糟糕的!
如果我们在parent中调用wait(),那么parent等待子节点终止,接收终止状态,然后继续。写?我已经看过很多例子,
由于父进程正在使用大量内存,在内核过度提交策略的某些配置下,fork可能会与errno of ENOMEM一起失败。尽管子进程可能只有exec、内存消耗低的程序(如ls )。为了澄清这个问题,当/proc/sys/vm/overcommit_memory被配置为2时,(虚拟)内存的分配仅限于SWAP + MEMORY * ration(default to 50%)。当