open3只需要STDIN,STDOUT和STDERR。如果正在運行該命令使用其他文件描述符然後open3無法捕捉那些:Perl:open3,但對於n個文件描述符
echo foo # Can be captured
echo foo >&2 # Can be catured
echo foo >&3 # Cannot be captured (with open3)
我特地到IPC ::運行::來看,這似乎能夠應付,但我還需要和PID我發現IPC :: Run :: run沒有辦法給我。
是否有openN或IPC :: Run :: run的方式給我PID?
背景
這適用於GNU並行的可能的擴展,所以你可以做:
parallel 'echo {} start >&3;sleep 10;echo {} end >&3' ::: a b c 3>out.file
,而不必從混合不同作業的輸出。 GNU Parallel需要跟蹤每個pid - 特別是當使用--keep-order
時。
爲什麼你想要的PID? – ikegami
IPC :: Open3不會阻止您在fd3上放置管道。它只是不會爲你做。 – ikegami
孩子的pid在IPC :: Run內部已知。只需用'IPC :: Run :: start'替換IPC :: Run :: run'並轉儲返回的對象即可。不幸的是,這是沒有記錄,所以你自己... –