当“START”命令调用进程并被TASKKILL杀死时退出代码

时间:2013-08-21 05:54:17

标签: windows perl taskkill

假设我有一个脚本parent.pl使用child.plsystem命令调用另一个脚本start,如下所示:

# parent.pl
system("START \"CHILD\" /WAIT perl child.pl");
print "$?\n";

Child.pl正在运行需要很长时间的操作:

# child.pl
while (1) {}

现在我使用TASKKILL来终止child.pl

TASKKILL /FI "WINDOWTITLE eq CHILD"

令人惊讶的是,parent.pl打印的退出代码为0。但是,如果我只是在child.pl中拨打parent.pl而不是使用START命令,则退出代码为256

# parent.pl
system("perl child.pl");
print "$?\n";

START是否始终以代码0退出,即使它被杀了?有没有办法让它退出“正确”代码,如256

1 个答案:

答案 0 :(得分:1)

只是不要使用START。直接启动子进程。父母的执行将阻止,直到孩子完成。

首选IPC::System::Simple内置核心功能system