[問題] system()指令卡住

看板C_and_CPP作者 (niss)時間11年前 (2014/07/24 01:52), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我在主程式A中使用system()呼叫另一個執行檔B,但主程式運行到後來時,system()這道 指令似乎會停住。 我在system()前一行有cout,被呼叫的執行檔B只要一執行便會在log file做紀錄。 會說system()卡住是因為console上有印出位於system()前一行的資訊,而執行檔B 的log file並未有執行的紀錄,因此問題就在於system()這道指令成功呼叫執行檔B前。 奇怪的點在於停下的點不是固定的,因為主程式A使用system()會破萬次,通常在於九千 近一萬開始卡,每次的點會不同。停的時間也不固定,從幾十秒到一兩個小時都有。 目前推測是system()在fork()時有問題,但我也不是很懂這道指令,網路查到的資訊 還在消化中,先請教版上的各位,謝謝。 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.215.35 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1406137955.A.CA4.html

07/24 02:08, , 1F
我遇過舊的 uclibc 0.9.28 的system() 也有怪問題
07/24 02:08, 1F

07/24 03:57, , 2F
考慮用exec()系列吧
07/24 03:57, 2F

07/24 11:50, , 3F
exec()不是會取代父程序? 還是我有理解錯誤,不好意思
07/24 11:50, 3F

07/24 13:10, , 4F
看一下記憶體資訊,每個system指令都會跟主程序一樣記憶體
07/24 13:10, 4F

07/24 22:11, , 5F
fork()後 child去exec()
07/24 22:11, 5F
文章代碼(AID): #1Jp_PZoa (C_and_CPP)