1
如果我試圖在管道運行時關閉管道,它會等待,直到命令完成。一些命令永遠運行,導致它無限凍結。我設法解決的唯一解決方案是確定PID,終止進程並關閉管道。但我還沒有找到安全確定PID的方法。確定在Windows上調用popen的PID
FILE* pipe;
wchar_t* command;
pipe = _wpopen(command, L"r");
... // determine the PID and TerminateProcess
pclose(pipe);
那麼如何確定從popen調用到popen的PID?
這是我現在使用的解決方案(通過比較流程命令),但它感覺很便宜。必須有其他方式。也許通過使用不同的函數而不是popen。 – Michael
@Michael你可以編寫你自己的popen-crt源代碼與Visual Studio一起發佈 - 你可以調整一下,創建一個修改後的mypopen,它返回來自CreateProcess的PID/Handle。除此之外,我想不出另一種方式。 – user93353
我一定會考慮一下。謝謝! – Michael