gpt4 book ai didi

perl - 如何确定脚本是在系统中执行还是在 Perl 中的 qx 调用中执行?

转载 作者:行者123 更新时间:2023-12-04 08:29:51 25 4
gpt4 key购买 nike

在 Perl 中,是否可以确定一个脚本是否正在另一个脚本中执行(大概是通过 systemqx )?

$ cat foo.pl
print "foo";
print "\n" if not $in_qx; # or the like.

我意识到如果脚本是通过 exec 运行的,这不适用。 .

我肯定知道 system将进程作为 fork 运行我知道 fork可以返回一个可变的值,具体取决于您是在父进程还是子进程中。不确定 qx .

无论如何,我不确定如何确定我是否在 fork 中ed 过程而不实际执行 fork .

最佳答案

所有进程都是从另一个进程派生出来的(init 除外)。您可以通过 open 判断程序是否运行, qx// , open2 , 或 open3通过使用 isatty函数来自 POSIX ,但是没有好的方法可以确定您是否正在运行 system无需查看进程树,即使如此,它也会变得模糊不清(例如 system "nohup", "./foo.pl" 不会将调用 perl 进程作为其父进程)。

关于perl - 如何确定脚本是在系统中执行还是在 Perl 中的 qx 调用中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/946959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com