Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
无法从perl cgi工作_Perl_Perl Module_Mod Perl_Mod Perl2 - Fatal编程技术网

无法从perl cgi工作

无法从perl cgi工作,perl,perl-module,mod-perl,mod-perl2,Perl,Perl Module,Mod Perl,Mod Perl2,我有一个perl脚本,它是从cgi页面派生出来的,并成为一个独立运行的守护进程。如果有一个die是从它使用的任何模块调用的,那么脚本将被调用,尽管它已经在eval块中处理过。不过,当我在命令提示符下运行脚本时,一切正常,错误得到了处理 注意:从命令行看,脚本也正在变成一个守护进程。对不起,这里没有真正的答案,但有些事情需要研究 如果您是从mod_perl生成作业,请记住它比通常更复杂。您需要关闭文件描述符,httpd/mod_perl将打开的不仅仅是0、1和2。我们最后写了一个循环,它刚刚结束了

我有一个perl脚本,它是从cgi页面派生出来的,并成为一个独立运行的守护进程。如果有一个die是从它使用的任何模块调用的,那么脚本将被调用,尽管它已经在eval块中处理过。不过,当我在命令提示符下运行脚本时,一切正常,错误得到了处理


注意:从命令行看,脚本也正在变成一个守护进程。对不起,这里没有真正的答案,但有些事情需要研究

如果您是从mod_perl生成作业,请记住它比通常更复杂。您需要关闭文件描述符,httpd/mod_perl将打开的不仅仅是0、1和2。我们最后写了一个循环,它刚刚结束了0到255的循环。而且我认为stdout不是记忆中的1


但不确定为什么eval不能工作。您是否正在使用exec生成脚本?在这种情况下,它应该与从shell运行它相同。当你说它被杀死时,你的意思是死亡导致scirpt退出,就像没有评估一样?或者别的什么。如果是其他原因,您可能会从mod_perl正在运行的httpd进程继承信号处理程序吗?

更正:如果有一个die从它正在使用的任何模块调用,脚本将被终止,尽管它已在eval block中处理。stdin、stdout和stderr是文件描述符0、1和2,分别用于从cgi调用脚本,我使用了系统调用。。systemscript_至_daemonize;在脚本中,我将其后台监控为:my$pid;如果$pid=fork{exit 0;}fatalcould't fork!:$!除非定义为$pid;正在尝试设置独立会话setsid!=-1或fatal无法设置ID:$\n$pid=分叉和出口;fatalcould't fork!:$!除非定义为$pid;看起来不错,对不起,我不知道你的问题是什么。