如何终止 SIGPIPE 上的进程?
How to terminate a process on SIGPIPE?
我有一个使用 IPv4 的服务器程序。
服务端要处理客户端的多次调用,所以每次接受客户端socket连接都会创建一个child进程来处理客户端。
child 进程应该从客户端读取,然后写入客户端套接字。如果它收到一个 SIGPIPE(来自一个在写入前关闭的坏客户端),它应该在 child 的工作完成时终止。我是显式声明信号处理程序还是 SIGPIPE 默认终止它?我是初学者,如有不明请见谅
来自man 7 signal
:
The entries in the "Action" column of the table below specify the default
disposition for each signal, as follows:
Term Default action is to terminate the process.
[...]
然后,稍后在 table:
Signal Standard Action Comment
────────────────────────────────────────────────────────────────────────
[...]
SIGPIPE P1990 Term Broken pipe: write to pipe with no
readers; see pipe(7)
因此您无需执行任何操作,默认信号处理程序将终止进程。
我有一个使用 IPv4 的服务器程序。 服务端要处理客户端的多次调用,所以每次接受客户端socket连接都会创建一个child进程来处理客户端。
child 进程应该从客户端读取,然后写入客户端套接字。如果它收到一个 SIGPIPE(来自一个在写入前关闭的坏客户端),它应该在 child 的工作完成时终止。我是显式声明信号处理程序还是 SIGPIPE 默认终止它?我是初学者,如有不明请见谅
来自man 7 signal
:
The entries in the "Action" column of the table below specify the default
disposition for each signal, as follows:
Term Default action is to terminate the process.
[...]
然后,稍后在 table:
Signal Standard Action Comment
────────────────────────────────────────────────────────────────────────
[...]
SIGPIPE P1990 Term Broken pipe: write to pipe with no
readers; see pipe(7)
因此您无需执行任何操作,默认信号处理程序将终止进程。