由于父进程正在使用大量内存,在内核过度提交策略的某些配置下,fork可能会与errno of ENOMEM一起失败。尽管子进程可能只有exec、内存消耗低的程序(如ls )。为了澄清这个问题,当/proc/sys/vm/overcommit_memory被配置为2时,(虚拟)内存的分配仅限于SWAP + MEMORY * ration(default to 50%)。当进程分叉
我在一个算法的并行实现上编程,它使用了非线程安全操作。因此,我使用fork()和POSIX共享内存,它工作得很好。现在问题来了。当子进程退出时,父进程动态分配的内存会发生什么情况?parents work // retrieve results from shared memory }
问题是,我不知道计算是从哪里调用的,也不知道分配给它们<