我有个奇怪的情况。
我有一个c写的程序“A”,它以其他可执行文件的名称作为参数。“B”、“C”、“D”等“A”的主要工作是分叉并启动“B”、“C”等,然后检查它们是否崩溃,在这种情况下重新启动崩溃的进程。
此外,进程“A”为RTC同步目的运行一个分离的线程。“A”以/bin/sh -c A B C D etc开头。
我所处的是一个嵌入式环境,我使用的是从Linux4.4.57派生的自定义内核。
现在问题是:有时候我的过程“A”变成了僵尸!
我所提出的一些意见:
启动“A”的父进程/bin/sh -c仍然有效;
处理“B”、“C”等的子程序都没有死亡;
“A”对信号作出反应;
如果我杀死了父进程
我在Linux平台上使用Perl。首先,我创建了一个线程,并在这个新线程中派生了一个子进程。当新线程中的父进程返回并加入主线程时,我想向在创建的线程中产生的子进程发送TERM信号,但信号处理程序不起作用,子进程变成僵尸。下面是我的代码:
use strict;
use warnings;
use Thread 'async';
use POSIX;
my $thrd = async {
my $pid = fork();
if ($pid == 0) {
$SIG{TERM} = \&child_exit;
`echo