sigchld

    3热度

    1回答

    我有一个主管计划,通常希望收到SIGCHLD事件。但是,在收到SIGTERM或类似信号后,忽略SIGCHLD事件以防止僵尸是安全和可取的。问题在于,我不确定在信号处理程序内部调用signal(2)是否合法,以便例如SIGTERM调用signal(SIGCHLD, SIG_IGN)。它不会出现导致问题,但我知道有很多限制放置在信号处理程序中可以执行的操作,并且我无法确定调用signal是否处于禁止区

    1热度

    1回答

    是否每个子进程的出口(or_exit或exit)都向其父进程发送SIGCHLD?如果是这样,那么僵尸进程是如何创建的?由于通常在SIGCHLD中调用wait系统调用处理程序。

    1热度

    2回答

    我看到这样的SIGCHLD处理器的一些例子: void child() { wait(0); signal(SIGCHLD, child); } void server_main() { ...

    1热度

    1回答

    因此,当孩子死亡的父母得到SIGCHLD,但如果父母在等待之前死亡(),孩子将被重新规划为init。目前这个孩子是zombie,即<defunct>。 接下来会发生什么? 请问init等待那个孩子吗?如果是的话,它什么时候做?有关时间限制的任何保证?

    2热度

    2回答

    我有一个C程序,每分钟轮询一次硬件传感器,并将读数添加到数据库中。为了确保读数更接近每分钟(而不是每小时+开销时间),程序会创建一个孩子来完成实际工作,然后在创建另一个孩子之前休眠60秒。 我遇到的麻烦是来自孩子的SIGCHLD正在中断睡眠(60),导致创建无限的孩子​​,而不是每分钟一次。 这是我怎么一直在努力做到这一点: while(1) { /* Create a child

    3热度

    2回答

    在Unix中,当后台的子进程终止时,它会向父进程发送一个SIGCHLD信号通知它已终止。 即使进程处于前台,也会发生同样的情况吗?如果是这样,这意味着家长会忽略它。 这是正确的吗?或者如果它在前景中,那么根本没有信号发送?

    2热度

    2回答

    我希望在Windows上具有SIGCHLD功能(即,当孩子死亡时通知父进程)。我知道在Windows API中没有与SIGCHLD相当的功能,但我想知道在Windows中实现此功能的常用方法。我确信这是Windows开发人员经常碰到的问题。 我现在能想到的唯一解决方案就是轮询孩子们,看他们是否还活着。 注意:我的应用程序是单线程的,如果可能的话,我想保留它。该应用程序有一个非阻塞事件循环(使用se

    2热度

    1回答

    我正在运行一个运行MontaVista Linux 3.1的平台。 我有一个C++应用程序,由于深奥的原因,我不会进入,必须在只读和读写之间重新安装JFFS2闪存文件系统。 当您执行调用sys/mount.h中指定的int mount(...)设置文件系统读写时,jffs2_gcd_mtd0垃圾回收器进程将按照您的预期启动。但是,当您重复拨打mount来回到只读状态时,jffs2_gcd_mtd0

    0热度

    1回答

    所中断 我有以下代码段: try: r_l, w_l, e_l = select.select([connection_fd], [], [], timeout_secs) except select.error as (err_no, msg): # get interrupted on select 虽然我的程序等待在此,如果有一个信号(如SIGCHLD),选择与中断

    4热度

    1回答

    下面是一个示例代码,其中shell脚本在后台启动一些作业,并在接收到CHLD信号时(即子进程终止),它将采取一些操作......问题是如果父shell脚本是ZSH一,它工作得很好,陷阱的CHLD信号,但其他shell做而不是!这是为什么? #! /bin/zsh - function foo() { echo "Trapped CHLD signal!" } trap 'foo' CHL