2

open3 は、STDIN、STDOUT、および STDERR のみを受け取ります。実行中のコマンドが他のファイル記述子を使用している場合、open3 はそれらをキャプチャできません。

echo foo # Can be captured
echo foo >&2 # Can be catured
echo foo >&3 # Cannot be captured (with open3)

私はIPC::Run::runを調べましたが、これはそれに対処できるようですが、PIDも必要であり、IPC::Run::runがそれを提供する方法が見つかりませんでした。

openN または IPC::Run::run が PID を取得する方法はありますか?

バックグラウンド

これは、GNU Parallel の可能な拡張を意図しているため、次のことができます。

parallel 'echo {} start >&3;sleep 10;echo {} end >&3' ::: a b c 3>out.file

異なるジョブからの出力が混在することはありません。GNU Parallel は、各 pid を追跡する必要があります (特に--keep-orderを使用する場合)。

4

1 に答える 1