[問題] Qt - 在QThread內使用QProcess,主程式卻卡住了...

看板C_and_CPP (C/C++)作者 (RR)時間16年前 (2010/03/24 19:52), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我正在寫一個Qt console application (我的主程式) 會透過QProcess去執行一個外部執行檔 PS:該執行檔是一個用Qt寫出來的簡單瀏覽器 因為直接用QProcess去執行它,會讓主程式被block住 所以改在Thread內去執行 但是主程式還是被block住了... 且如果我把瀏覽器關掉,主程式也結束掉了(exited with code 0) 希望得到的正確結果: 主程式把瀏覽器較起來之後,可以繼續它的任務 (執行後續的程式碼) 程式跑出來的錯誤結果: 上述~ 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) ubuntu 8.0.4 on x86 Qt 4.5.2 Code will compile for MIPS 有問題的code: (請善用置底文標色功能) Thread部分 class Browser : public QThread { public: Browser(); void run(); void stop(); QProcess *proc; ... ... ... void Browser::run() { proc->execute("/home/username/web.exe"); } 主程式 Browser webThread(); webThread.start(); // ********************* fprintf(stderr, "Wake browser up..."); 補充說明: webThread.start();之後,程式流就不繼續跑了 所以後面的debug訊息(以及所有程式碼)都不執行了.....:( 怎麼用了thread還是被卡住? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.38.86

03/24 20:17, , 1F
把execute改成start
03/24 20:17, 1F

03/25 11:43, , 2F
改start之後,變成Browser在跑但主程式直接結束exited 0
03/25 11:43, 2F
文章代碼(AID): #1BgVpsdd (C_and_CPP)
文章代碼(AID): #1BgVpsdd (C_and_CPP)