fork调用没有输入子代码的原因是什么

时间:2012-10-16 06:37:39

标签: linux fork parent-child telnet

我在程序功能中有这段代码。 并且有一个测试脚本可以访问此代码路径。 脚本多次执行此函数(~1000)。

fork()调用成功,因为我可以看到来自父块syslog的子pid,但是我没有看到来自子块的任何内容。

这不会永远发生。在一百次尝试中只发生过一次。

知道发生这种情况的一般原因是什么。

我应该寻找什么才能获得有关失败的更多信息。

int i;

if ((i = fork()) < 0) {
    syslog(LOG_NOTICE, "(%s): fork failed!\n", __func__);
}
if (i) {
    syslog(LOG_NOTICE, "(%s): fork Parent: id: %d\n", __func__, i);
} else {
    syslog(LOG_NOTICE, "(%s): fork child\n", __func__);
    /* Do something */
}

Output:
telnetd[24600]: (startslave): fork Parent: id: 24601
<Thats it, no log after this!!>

确切地说,这是freeBSD telnetd startslave()代码的一部分,脚本只是尝试使用telnet登录并注销1000次,有时会失败。失败是有保证的,可能发生在100次尝试之后或者可能在700次尝试之后。

0 个答案:

没有答案