加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl fork()&exec()

发布时间:2020-12-15 23:20:17 所属栏目:大数据 来源:网络整理
导读:我试图掌握fork()的概念. exec()用于我自己的学习目的.我正在尝试使用perl fork作为第二个相同的进程,然后使用它来执行.sh脚本. 如果我使用fork() exec()我可以让.sh脚本与我的perl脚本并行运行吗? Perl脚本不会等待子进程并继续执行.所以我的perl脚本并不
我试图掌握fork()&的概念. exec()用于我自己的学习目的.我正在尝试使用perl fork作为第二个相同的进程,然后使用它来执行.sh脚本.

如果我使用fork()& exec()我可以让.sh脚本与我的perl脚本并行运行吗? Perl脚本不会等待子进程并继续执行.所以我的perl脚本并不关心子进程的输出,而只关心命令有效并且正在运行.有点像调用脚本在后台运行.

我是否可以通过某种安全措施来了解子进程是否正确退出?

解决方法

If I use fork() & exec() can I get the .sh script to run in parallel to my perl script? […] Sort of like calling the script to run in the background.

是.叉子和exec实际上是shell在后台运行命令的方式.

Is there some sort of safety I can implement to know that the child process exited correctly as well?

是的,使用waitpid()并查看存储在$中的返回值?

就像提到的@rohanpm一样,perlipc手册页有很多有用的例子说明了如何做到这一点.这是最相关的一个,其中为SIGCHLD设置信号处理程序(当子进程终止时将发送给父进程)

use POSIX ":sys_wait_h";
$SIG{CHLD} = sub {
    while ((my $child = waitpid(-1,WNOHANG)) > 0) {
        $Kid_Status{$child} = $?;
    }
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读