如何判断进程当前是否在运行时分叉?

时间:2014-02-20 01:23:19

标签: linux fork

像“int is_forking();”之类的东西会很好=)

我遇到一个问题,即当从fork调用中调用malloc时会死锁。

1 个答案:

答案 0 :(得分:2)

POSIX定义指定:

  

从应用程序的角度来看,fork()调用应该是原子的。

因此,理论上没有别的东西(malloc或其他)可以并行发生。

实际上,使用pthread_atfork()提供自己的回调来维护is_forking标志;您可以在调用prepare回调时设置此标志,并在调用parentchild回调时将其清除。