【发布时间】:2015-07-20 06:31:34
【问题描述】:
我编写了一个 TCP 守护程序,它接受给定端口上的客户端连接,然后使用 execv(3) 执行命令。在每个编写守护进程的教程中都提到关闭 stdin、stdout、stderr 以成功守护进程。
但是我发现accept(2) 重用了已经关闭的stdout/stderr 的文件描述符编号,所以在调用fork(2) 和execv(3) 之后,子进程将输出写入套接字只是因为stdout/stderr 映射到文件描述符现在与客户端套接字关联。
有什么想法可以在不使用 shell 输出重定向的情况下避免这种情况吗?
【问题讨论】:
标签: linux file sockets descriptor