inetd如何将控制权传输到服务,下面是我的理解
/etc/inetd.conf中提到的每个端口/etc/inetd.conf将该请求的控制权转移到服务,将其作为子进程旋转。我的疑虑在下面
发布于 2020-03-14 17:24:32
inetd监听端口,然后将其连接到将处理端口的服务的stdin、stdout和stderr。
accept之后,它的fds之一上有一个套接字。dup将fd授权给0、1和2。fork。所有文件描述符都将保持打开状态,除非采取了一些关闭它们的操作(因此,0、1和2仍然处于打开状态)。exec,fds仍然保持开放状态。listen。(我做了一些搜索,但没有看到inetd告诉服务程序它是由inetd调用的。我希望使用命令行参数。)
发布于 2020-03-14 12:25:50
考虑一下这样的行为:
父级
sfd = socket(), listen(), connect(), fork();对于其他不应由子进程继承的描述符,close()或以前在fork之后将它们设置为FD_CLOEXEC;,父进程可以关闭此sfd。
孩子
继承的连接套接字描述符的execve();副本,可用于客户端I/O
发布于 2020-03-16 07:00:37
在Que套接字编程中,它在The Design Parameters of inetd Servers一节中有很好的解释。
https://unix.stackexchange.com/questions/572876
复制相似问题