问题标签 [sigchld]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
535 浏览

python - SIGCHLD 未中断 python 选择

我有以下代码:

当我的程序等待这个时,如果有信号(如 SIGCHLD),则选择会被 select.error 中断。但是,即使我在输入 select 之前有待处理的信号,我也不确定这是否有效?(connection_fd 套接字设置为阻塞)。

是否有可能存在未决信号但 select 仍然没有被中断?

0 投票
1 回答
386 浏览

unix - 您可以从信号处理程序中调用 signal() 吗?

我有一个通常想要接收SIGCHLD事件的主管程序。然而,在它接收SIGTERM到或类似的信号之后,忽略SIGCHLD事件以防止僵尸是安全且可取的。问题是我不确定signal(2)在信号处理程序中调用是否合法,例如SIGTERM调用signal(SIGCHLD, SIG_IGN)它似乎不会引起问题,但我知道您可以在信号处理程序中执行的操作有很多限制,而且我无法确定调用signal是否在禁区内。

那么:这是合法的,可靠的吗?如果没有,是否有另一种方法可以确保在SIGTERM可能僵尸出现时没有孩子仍在跑步,即使他们没有得到适当wait的教育?

0 投票
1 回答
1313 浏览

unix - 僵尸进程,SIGCHLD,在 unix 中退出

子进程的每个退出(退出或退出)是否都向其父进程发送 SIGCHLD?如果是,那么如何创建僵尸进程?因为等待系统调用通常在 SIGCHLD 处理程序中调用。

0 投票
1 回答
1410 浏览

c - 在 BSD 上使用 sigtimedwait() 捕获 SIGCHLD

我无法使用 sigtimedwait() 在 FreeBSD 上捕获 SIGCHLD 信号。以下源代码在 Debian GNU/Linux 7 上运行良好,但给了我一个在 FreeBSD 9.1 上暂时不可用的资源:

Linux 上的输出:

FreeBSD 上的输出:

在 BSD 上使用 signal() 可以正常工作,但这不是我想要的。我错过了什么?

0 投票
1 回答
4043 浏览

c - sigchld 的语法及其声明

在编译我的 C 程序以使用 UDP 实现多个客户端服务器聊天程序时,我遇到了一些错误..我能够纠正其中一些,但不能与其他一些..他们是....:

1) 未知类型名称 sig_atomic_t

2) sigchild_action 的存储大小未知

3) SIGCHLD 未声明(在此函数中首次使用)

4) SIGUSR2 未声明(在此函数中首次使用)

我不知道如何解决这个错误......我尝试了很多,但无法在任何地方找到 sigchild 的语法......n知道如何声明它......请帮帮我......

0 投票
3 回答
2915 浏览

c - SIGCHLD 未被捕获

我打算在父进程休眠 10 秒时将以下代码作为子进程分叉并执行“sleep 3”。我希望父进程在 3 秒后收到 SIGCHLD,当“睡眠 3”完成时。

这不会发生,而是我得到:

ps -ef显示一个

其次是:

在接下来的 7 秒内(此时父进程退出)。

问题是clean_up_child_process永远不会被调用。

我犯了什么错误?

僵尸测试.c:

0 投票
2 回答
1728 浏览

java - Java 信号链

我有一个带有专用Process类型类的程序,它处理在 Linux 上本地执行的进程。

它根本不使用Java的Process类,因为它需要对进程做一些特殊的处理。因此,它还为 安装了自己的信号处理程序SIGCHLD,以便知道进程何时退出。

但是,我只是Runtime.exec()在我的代码中添加了一个调用,它显然为 安装了自己的信号处理程序SIGCHLD,这意味着我再也不会得到一个SIGCHLD,这很糟糕。我遵循了来自oracle的信号链指令,但同样的问题发生了,我从来没有得到SIGCHLD.

所以,基本问题是这样的:是否可以SIGCHLD在 Java 中进行链接?

0 投票
2 回答
1413 浏览

c - 一个进程如何知道哪个孩子结束了?

当一个进程子进程终止时,他正在向SIGCHLD 父进程发送一个。现在,如果父进程有多个子进程,父进程如何知道哪个子进程发送了信号?

0 投票
3 回答
4251 浏览

c - 哪个子进程发送 SIGCHLD

我试图了解信号处理和过程。我有一个创建多个子进程的父进程。现在在父进程中,我有一个所有子进程的列表。当孩子被终止时,我想将其从列表中删除。我知道当孩子被终止时,他会发送SIGCHLD给父母。好的,现在这是棘手的部分,我怎样才能知道那个孩子是终止了还是只是暂停了或其他什么?

0 投票
1 回答
1603 浏览

c - what is the relation between SIGTSTP and SIGCHLD

I have tow handlers for each one of them (SIGTSTP, SIGCHLD), the thing is that when I pause a process using SIGTSTP the handler function of SIGCHLD run too. what should I do to prevent this .

signal handlers :

Susp_Bg_Pid used to save the paused process id.
susp indicates the state of the "smash" the parent process if it is suspended or not .