如何调试Python SIGCHLD处理程序?

时间:2014-07-08 05:09:29

标签: python macos signals

我正在用Python编写一个使用以下工作流程的服务器程序: 1)启动一个守护进程 2)启动服务器套接字并侦听传入连接 3)成功接受传入套接字时,分叉一个新进程来处理连接,关闭子进程中的客户端套接字和守护进程中的服务器套接字。

当我在守护进程中为SIGCHLD注册信号处理程序以获取子进程(无论处理程序的内容如何)并运行服务器时,守护程序在收到SIGCHLD时崩溃。我不能为我的生活找出原因,因为无论出于什么原因,登录到syslog都不适合我,我无法调试这个。我正在使用PyCharm,它无法调试分叉进程。我该如何调试这个问题?什么可能导致程序在调用SIGCHLD处理程序时失败?

我在Mac OS X.8上使用Python 3.4

1 个答案:

答案 0 :(得分:1)

事实证明,我的信号处理功能使用了错误的签名。根据{{​​3}}

,我使用def my_handler()代替def my_handler(signum, frame)