Python套接字、request.recv与信号

1 投票
1 回答
1088 浏览
提问于 2025-04-16 17:13

我有一个问题,因为我对Python、套接字编程和信号还比较陌生。我写了一个Python套接字服务器,每当有客户端连接到某个端口时,它就会创建一个新的进程来处理请求。我已经捕捉到了Ctrl+C信号,并在服务器收到这个信号时关闭了数据库连接。

由于我正在使用netcat命令测试我的服务器,我的问题是:如果在一个bash窗口中使用Ctrl+C来终止正在运行的客户端连接,服务器能否捕捉到这个SIGINT信号并做出反应?

还是说因为客户端是一个完全不同的程序(在我的例子中是netcat命令),所以只有客户端能接收到SIGINT信号?

如果客户端被键盘中断,服务器能否接收到SIGINT命令?

谢谢你提前提供的任何信息。

1 个回答

2

信号是在各自的进程中存在的:如果客户端进程发出了一个信号,服务器进程是不会知道的,反之亦然。你可以选择让一个进程告诉另一个进程它要结束了,或者就等着另一方注意到连接已经断开(如果你使用的是TCP/IP,这种情况会通过给定的套接字上的失败操作来反映出来)。

撰写回答