我正在用Python编写一个使用以下工作流程的服务器程序: 1)启动一个守护进程 2)启动服务器套接字并侦听传入连接 3)成功接受传入套接字时,分叉一个新进程来处理连接,关闭子进程中的客户端套接字和守护进程中的服务器套接字。
当我在守护进程中为SIGCHLD注册信号处理程序以获取子进程(无论处理程序的内容如何)并运行服务器时,守护程序在收到SIGCHLD时崩溃。我不能为我的生活找出原因,因为无论出于什么原因,登录到syslog都不适合我,我无法调试这个。我正在使用PyCharm,它无法调试分叉进程。我该如何调试这个问题?什么可能导致程序在调用SIGCHLD处理程序时失败?
我在Mac OS X.8上使用Python 3.4
答案 0 :(得分:1)
事实证明,我的信号处理功能使用了错误的签名。根据{{3}}
,我使用def my_handler()
代替def my_handler(signum, frame)