如何从Perl执行外部程序并使Perl脚本继续
我正在Ubuntu上运行一个来自cron作业的perl脚本。作为脚本的一部分,它需要执行一个外部程序,而不是等待程序完成并继续执行脚本。我已经尝试了下面的方法,但尽我所能,它没有执行程序,也没有继续脚本如何从Perl执行外部程序并使Perl脚本继续,perl,Perl,我正在Ubuntu上运行一个来自cron作业的perl脚本。作为脚本的一部分,它需要执行一个外部程序,而不是等待程序完成并继续执行脚本。我已经尝试了下面的方法,但尽我所能,它没有执行程序,也没有继续脚本 exec("/usr/bin/dotnet /usr/local/myprogram/myprogram.dll arg1, arg2, moreargs") or print STDERR "Couldn't exec myprogram"; 要调用程序,应将程序参数作为单独的参数
exec("/usr/bin/dotnet /usr/local/myprogram/myprogram.dll arg1, arg2, moreargs")
or print STDERR "Couldn't exec myprogram";
- 要调用程序,应将程序参数作为单独的参数传递给
。(见附件。)exec
- 由于您希望脚本在不等待程序返回的情况下继续运行,因此应使用
(请参阅),以便有两个单独的进程并行运行(一个运行程序,一个运行脚本的其余部分)fork
- 要调用程序,应将程序参数作为单独的参数传递给
。(见附件。)exec
- 由于您希望脚本在不等待程序返回的情况下继续运行,因此应使用
(请参阅),以便有两个单独的进程并行运行(一个运行程序,一个运行脚本的其余部分)fork
为什么要调用wait()?@GordonGudmundson:因为上面说“如果你在没有等待孩子的情况下使用fork,你会积累僵尸。”我实际上不确定这是一个多大的问题,但因为它很容易修复,也可以。在我的情况下,我不想使用wait(),因为fork过程运行时间很长,但短暂。谢谢你的帮助!为什么要调用wait()?@GordonGudmundson:因为上面说“如果你在没有等待孩子的情况下使用fork,你会积累僵尸。”我实际上不确定这是一个多大的问题,但因为它很容易修复,也可以。在我的情况下,我不想使用wait(),因为fork过程运行时间很长,但短暂。谢谢你的帮助!
my $child_pid = fork();
die "Couldn't fork" unless defined $child_pid;
if (! $child_pid) {
exec '/usr/bin/dotnet', '/usr/local/myprogram/myprogram.dll', 'arg1', 'arg2', 'moreargs';
die "Couldn't exec myprogram: $!";
}
# rest of script
wait();