我有一個 Perl 腳本,里面呼叫system("something &"). 如果我從 shell 運行它,我會呼叫腳本,然后使用wait命令來等待所有后臺行程。
如何從 Python 呼叫此腳本并等待它生成的“后臺”腳本完成?
我試過了
pipe = subprocess.Popen(["perl", "script.pl", "data1", "data2"], stdin=subprocess.PIPE)
pipe.communicate()
但它不會等待并在 perl 腳本完成后退出。
另一個問題是我不知道如何在運行時將后臺行程的輸出列印到 shell。
uj5u.com熱心網友回復:
我已通過根據此答案更改 Perl 腳本來解決此問題如何讓 Perl 等待使用 system() 在后臺啟動的子行程?
我變了
system("something &")
到
my $pid = fork();
if ($pid == -1) {
print("Failed to fork");
die;
} elsif ($pid == 0) {
exec "something ";
}
并添加
while (wait() != -1) {}
到腳本結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316253.html
下一篇:Perl嵌套哈希匹配和合并
