[問題] system()指令卡住

作者: niss (niss)   2014-07-24 01:52:33
開發平台(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):
作者: bobhsiao (↙小臃腫.人肥言輕↗)   2014-07-24 02:08:00
我遇過舊的 uclibc 0.9.28 的system() 也有怪問題
作者: q82419 (q82419)   2014-07-24 03:57:00
考慮用exec()系列吧
作者: niss (niss)   2014-07-24 11:50:00
exec()不是會取代父程序? 還是我有理解錯誤,不好意思
作者: askacis (ASKA)   2014-07-24 13:10:00
看一下記憶體資訊,每個system指令都會跟主程序一樣記憶體
作者: q82419 (q82419)   2014-07-24 22:11:00
fork()後 child去exec()

Links booklink

Contact Us: admin [ a t ] ucptt.com