我有一个问题,因为我对 python、套接字编程和信号还很陌生。我已经编写了一个 python 套接字服务器,它 fork 一个新进程来处理连接到某个端口的每个客户端的请求。如果服务器收到这样的信号,我已经捕获了 ctrl+c 信号并关闭了我的数据库连接。
因为我正在使用 netcat 命令测试我的服务器,所以我的问题是:如果使用 CTRL+C 终止在 bash 窗口中运行的客户端连接,服务器能否捕获该 SIGINT 信号并对其采取行动? 还是因为客户端是一个完全不同的程序(我的情况是 netcat 命令)是唯一可以接收 SIGINT 信号的程序?
如果客户端被键盘中断,服务器能否接收到 SIGINT 命令?
预先感谢您提供有关此的任何信息。
最佳答案
信号存在于它们自己的进程中:在客户端进程中发出的信号不会被服务器进程知道,反之亦然。您的选择是让一个进程告诉另一个进程它正在终止,或者只是等待另一方注意到连接已断开(如果您使用的是 TCP/IP,它将来自失败的套接字在给定的套接字上进行操作)。
关于python 套接字、request.recv 和信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5926908/