Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sigchld Can';t忽略信号CHLD,强制默认 #包括 #包括 #包括 #包括 #包括 #包括 #包括 int main(){ 信号(信号灯、信号灯); pid_t pid=vfork(); if(pid_Sigchld - Fatal编程技术网

Sigchld Can';t忽略信号CHLD,强制默认 #包括 #包括 #包括 #包括 #包括 #包括 #包括 int main(){ 信号(信号灯、信号灯); pid_t pid=vfork(); if(pid

Sigchld Can';t忽略信号CHLD,强制默认 #包括 #包括 #包括 #包括 #包括 #包括 #包括 int main(){ 信号(信号灯、信号灯); pid_t pid=vfork(); if(pid,sigchld,Sigchld,Perl发出此警告。就Perl而言,glibc的最新版本(或Linux内核中的特定选项)似乎已经删除了忽略SIGCHLD的功能。我不知道为什么会出现这种情况,但我只是在一个以前乐于忽略SIGCHLD的系统上遇到了它 根据perldoc perlipc的perldoc perlipc,您肯定应该查看它以了解更多信息,解决这一问题的最佳方法是: 使用POSIX“:sys_wait_h”#进行非阻塞读取 $SIG{CHLD}=sub{ 而((my$child=waitpid(-1,WNOHANG))>

Perl发出此警告。就Perl而言,glibc的最新版本(或Linux内核中的特定选项)似乎已经删除了忽略SIGCHLD的功能。我不知道为什么会出现这种情况,但我只是在一个以前乐于忽略SIGCHLD的系统上遇到了它

根据perldoc perlipc的
perldoc perlipc
,您肯定应该查看它以了解更多信息,解决这一问题的最佳方法是:

使用POSIX“:sys_wait_h”#进行非阻塞读取
$SIG{CHLD}=sub{
而((my$child=waitpid(-1,WNOHANG))>0){
#$Kid_Status{$child}=$?;
}
};
#做一些分叉的事情。。。
带有
$Kid_Status
的行来自最初的perldoc,但我对它进行了注释,因为其目的是忽略子进程,我想明确指出,
while
的内部不需要包含任何代码erl脚本用于后台监控,或者如果您打算在处理程序中执行
exec
die

如果您无法编辑正在调用的Perl脚本,那么我建议在
execvp
命令用户忽略虚假警告之前打印一行到
STDERR

fputs(“下一行是无害警告。\n”,stderr);
 #include <sys/types.h>
 #include <stddef.h>
 #include <stdlib.h>
 #include <sys/wait.h>
 #include <signal.h>
 #include <iostream>
 #include <unistd.h>
 int main(){


        signal(SIGCHLD,SIG_IGN );
        pid_t pid  = vfork();
        if(pid <0){
            std::cout<< "Error: Fork failed at main!!!";
            exit(1);
        }else if (0 == pid){


            char * cmd[] ={(char*)"../work/C++11/Prj_LargeFile/script/Logger.pl",NULL};
            //char * cmd[] = {(char*)"pwd",NULL};
            //char * cmd[] = {(char*)"/usr/bin/perl",(char*)"../work/C++11/Prj_LargeFile/script/Logger.pl",NULL};

            execvp(cmd[0],cmd);


             _exit(0);
        }
}