【发布时间】:2017-05-20 02:20:18
【问题描述】:
我继承了一个 Perl 脚本,根据机器配置,该脚本在使用 $? == 11 调用 fork 时失败。
根据errno.h和variousposts,11是EAGAIN,即“再试一次”,因为某些资源暂时不可用。
有没有办法确定是哪个资源导致分叉失败, 除了一一增加各种系统限制 (open file descriptors, swap space,或 allowable threads) 的数量?
【问题讨论】:
-
分叉进程是原始进程的完整克隆。在 fork 之前分析你的进程将让你知道它使用了多少资源。
-
你的意思是 $!=11?
-
Do you mean $!=11?。其实,我有点说错了。我应该说的是,fork 是成功的,但立即以状态码 11 结束,正如wait所报告的那样。 -
所以你的问题与fork无关,那你为什么接受我的回答,完全是关于fork在失败时设置的errno???