我在Windows上運行一個Perl腳本,調用可執行文件:Perl的命令行解釋不出來
$command = "$path_to_exe -i $dir -o $results";
my $pid = fork();
if (!$pid) {
system($command);
#do stuff
} else {
#do stuff
}
print "Exiting..."
exit;
代替後退出的,只是perl.exe所在空轉。然後彈出窗口告訴我,「Perl命令行解釋器已停止工作。」
我不知道很多有關Windows進程管理,我已經在這個論壇上,它不是使用fork()
和exec()
好的做法以前讀,但代碼工作得很好,除了解釋不打烊的一部分。我嘗試了一切,從嘗試在Unix中執行程序(這給出了相同的錯誤),使用Win32::Process
命令 - 但沒有任何工作。我希望有一個更簡單的解決方案可以讓我保留我已經寫的東西。
如果任何人都可以解釋這個代碼運行時在Windows中究竟發生了什麼,那也是一種幫助!
叉EXEC不上贏得良好的習慣,因爲勝利是不是優化它。 Win是對海量線程和本地rpc進行了優化。但在你的情況下,這不是一個真正的問題,因爲你並不重要,你的包裝腳本0.001s或0.01s的開銷產生。如果你有例如一個數據庫服務器守護進程或者每秒必須被調用一千次的東西,它纔是重要的。另一件事,是的,fork() - exec()很慢,但fork() - system()更慢......我進一步看到,你根本沒有對第二個問題做出反應($ pid和不是$$)。你應該是合作者。 – peterh