這是我的問題 - 我有一個多線程(pthreads)C++應用程序,其中我有一個主控制循環線程和3個數據採集線程(一個串行端口讀取器/寫入器和兩個TCP套接字連接線程)。在程序期間的某些時候,我需要執行一個shell腳本。我已經做了相當的研究,並且看到system()
是一個選項。備選方案似乎指示使用fork()
和exec()
功能家族。如何從多線程C++ Linux應用程序安全地運行shell腳本?
我期望的問題是,使用fork()
會導致我的進程被複制,顯然這會導致我的通信線程運行沒有問題。由於system()
文檔指出它在幕後使用fork()
,這也意味着我無法使用它。
我不知道該如何着手。這種問題是否有最佳實踐方法?我可以看到繼續進行的唯一可能的方式是嘗試直接在C++代碼中創建我需要運行的shell腳本的功能。顯然,這樣做所需的工時是最不理想的選擇。我還有其他選擇嗎?
您不是第一個想在多線程程序中使用'fork'的人... –
爲什麼不使用fork來連接其中一個exec函數。也許甚至等待分叉進程完成執行? – wojciii
@ n.m。我不認爲我會這樣做,但是我在這裏發現了令人驚訝的少量信息。因此,這個問題。 – mathematician1975