在 Perl 中,是否可以确定一个脚本是否正在另一个脚本中执行(大概是通过 system
或 qx
)?
$ 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/