2

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

# 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令人惊讶的是,由is打印的退出代码0。但是,如果我只是调用child.plparent.pl不是使用START命令,则退出代码将是256.

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

即使代码被杀死,是否START总是退出代码?0有没有办法让它用“正确”的代码退出,比如256

4

1 回答 1

1

根本不使用START. 直接启动子进程。父进程中的执行将阻塞,直到子进程完成。

更喜欢IPC::System::Simple而不是内置的核心函数system

于 2013-08-21T12:43:47.447 回答