【问题标题】:How can I debug a Python SIGCHLD handler?如何调试 Python SIGCHLD 处理程序?
【发布时间】:2014-07-08 05:09:28
【问题描述】:

我正在用 Python 编写一个使用以下工作流程的服务器程序: 1) 启动一个守护进程 2) 启动服务器套接字并监听传入连接 3) 当一个传入的socket被成功接受后,fork一个新的进程来处理这个连接,关闭child中的client socket和daemon中的server socket。

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

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

【问题讨论】:

    标签: python macos signals


    【解决方案1】:

    事实证明,我的信号处理函数使用了不正确的签名。根据this thread,我使用def my_handler()而不是def my_handler(signum, frame)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-02
      • 2013-07-07
      • 2020-02-18
      • 2016-10-31
      • 2019-08-04
      • 2015-04-19
      • 2013-10-19
      • 2012-01-13
      相关资源
      最近更新 更多