use*_*348 4 parallel-processing perl fork exec
我正在尝试掌握fork()和exec()的概念,以用于我自己的学习目的.我正在尝试使用perl fork作为第二个相同的进程,然后使用它来执行.sh脚本.
如果我使用fork()和exec(),我可以让.sh脚本与我的perl脚本并行运行吗?Perl脚本不会等待子进程并继续执行.所以我的perl脚本并不关心子进程的输出,而只关心命令有效并且正在运行.有点像调用脚本在后台运行.
我是否可以通过某种安全措施来了解子进程是否正确退出?
如果我使用fork()和exec(),我可以让.sh脚本与我的perl脚本并行运行吗?[...]有点像调用脚本在后台运行.
是.Fork&exec实际上是shell在后台运行命令的方式.
我是否可以通过某种安全措施来了解子进程是否正确退出?
是的,使用waitpid()并查看存储的返回值$?
就像提到的@rohanpm一样,perlipc手册页有很多有用的例子说明了如何做到这一点.这是最相关的一个,其中设置了一个信号处理程序SIGCHLD(当子进程终止时将发送给父进程)
use POSIX ":sys_wait_h";
$SIG{CHLD} = sub {
while ((my $child = waitpid(-1, WNOHANG)) > 0) {
$Kid_Status{$child} = $?;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |