python 套接字、request.recv 和信号

标签 python linux sockets signals

我有一个问题,因为我对 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/

相关文章:

python - 重新扩展 groupby 数据 Pandas

python - 错误: too many values to unpack (expected 2) when raise error with serializers.验证错误

python - 将键盘表示为 3D 数组

java - 一个应用程序在 32 位 Linux 机器上可以使用多少内存?

linux - Bash - 在 for 循环中 Grepping nc 输出

java - Java的DatagramChannel.write()的含义

python - 如何调整此代码以同时返回第二个和第三个 "Nearest Neighbors"?

linux - bash 管道处理

javascript - socket io 将函数拆分到不同的文件中

sockets - 我可以使用Winsock发送非IP数据包吗?