|
|
1
11
socket()出错时返回-1。 返回0表示socket()成功,并为您提供了文件描述符0。我怀疑关闭的文件描述符中有一个文件描述符0,一旦关闭,对分配了文件描述符的函数的下一个调用将返回fd 0,因为它是可用的。 |
|
2
7
值为0的套接字很好,这意味着stdin已关闭,这将使fd 0可供重用——例如通过套接字。 可能是您在forkexec()子路径(xmlsocket/serverfd)中关闭的文件描述符之一,它是fd 0。这将在关闭fd 0的情况下启动子进程,当您从命令行运行应用程序时不会发生这种情况,因为fd 0已经作为shell的stdin打开。 如果希望套接字不是0、1或2(stdin/out/err),请在所有close()调用之后在forkeexec()函数中调用以下内容
检查套接字是否返回-1,这意味着发生了错误。 |
|
|
3
1
别忘了打电话给
“明显问题模式”结束。我在这里假设了一点,但是您没有对fork()调用返回的pid做任何操作。(-) |
|
|
4
0
正如在另一条注释中提到的,您确实不应该关闭0、1或2(stdin/out/err),您可以进行检查以确保不关闭它们,这样在您请求新的套接字时,它不会被分配为新的fd's。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 9 月前 |
|
|
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 10 月前 |
|
|
Marco · PyCharm Linux系统文件上os.stat异常 11 月前 |
|
|
Elektito · 变量地址不在/proc/self/maps中的堆栈范围内 11 月前 |