Perlでは、スクリプトが別のスクリプト(おそらくsystem
またはqx
経由)で実行されているかどうかを判断できますか?スクリプトがPerlのシステムコールまたはqxコール内で実行されているかどうかをどのように判断できますか?
$ cat foo.pl
print "foo";
print "\n" if not $in_qx; # or the like.
私はスクリプトがexec
経由で実行されていた場合、これが適用されていません実現しています。
system
がプロセスをfork
として実行していることがわかりました。私はfork
が親プロセスであるか子プロセスであるかによって可変の値を返すことができます。 qx
については不明です。
実際にfork
を実行せずにfork
処理中であるかどうかはわかりません。
あなたはどのプラットフォームで実行していますか? –
"標準" linux、特に特別なものはありません。 – Danny
私が興味深いと思ったことは、あなたが親か子かに応じてforkがあなたに0か$ PIDを与えることです。私はこれを見るための簡単な方法があると思っていました。しかし、これまでのところ、最高の答えはクルージュのように見えます。 Unforunate、Owensは興味深い点がありますが、すべてのプロセスがフォークされていて、歩いていると木が気になることがあります。 – Danny