3
的systemu頁說:使用systemu而不是open3的好處?
systemu可以在任何平臺上使用返回狀態,stdout,所有命令的標準錯誤。與其他方法(如open3/popen4)不同,完全管道或線程問題不會導致進程或子進程掛起。
(https://github.com/ahoward/systemu)
誰能解釋這一點呢?
的systemu頁說:使用systemu而不是open3的好處?
systemu可以在任何平臺上使用返回狀態,stdout,所有命令的標準錯誤。與其他方法(如open3/popen4)不同,完全管道或線程問題不會導致進程或子進程掛起。
(https://github.com/ahoward/systemu)
誰能解釋這一點呢?
方法like popen及其各種衍生產品很方便,並且是完整I/O庫的預期API的一部分。
但是,它們必須隨便使用或小心使用,因爲它們容易發生死鎖。我的意思是,如果你們都是從命令中讀寫的,那麼只要你不寫很多,或者沒有太多的閱讀,它仍然可以。我的意思是,您可以移動大量數據,但前提是您牢記操作的內部細節並刻意設計工程師以防止死鎖。
想象一下,寫了很多東西到你的手中命令然後閱讀結果。如果你寫的不止一個管道會緩衝,那麼你的進程就會休眠。在大多數情況下,這在實踐中是可以的,但如果命令需要寫很多東西呢?現在它可能會睡覺並且沒有讀完您正在發送的輸入內容。你不會完成發送輸入,所以你永遠不會醒來並閱讀結果。
僵局!