主程式在QThread內使用QProcess但卡住了

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

主程式在QThread內使用QProcess但卡住了

文章Guest » 週三 3月 24, 2010 7:33 pm

我有一個繼承QThread的class如下
代碼: 選擇全部
class Browser : public QThread
{
public:
  Browser();
  void run();
  void stop();
  QProcess *proc;
...
...
...
void Browser::run()
{
  proc->execute("/home/username/web.exe");
}


這個web.exe是一個用Qt寫出來的簡單瀏覽器

另有一個程式是Qt console application
會去使用到上面的這個thread
代碼: 選擇全部
Browser webThread();
webThread.start(); // *********************
fprintf(stderr, "Wake browser up...");


有時候會成功的把Broswer叫起來,但程式流會在webThread.start();這一行之後就卡住
後面的程式碼就無法執行下去了
有時候又變成Browser有起來,但主程式卻結束了(exited with code 0)

QProcess會這樣把program stream block住嗎?
Guest
 

Re: 主程式在QThread內使用QProcess但卡住了

文章kkebbc » 週二 6月 29, 2010 9:00 pm

依我的經驗 , 原因可能是Qt 本身執行code 有的時候並不是立即", 它的中央處理系統, 有時會慢半拍.
所以有可能proc->execute("/home/username/web.exe"); 這行指令雖然送出去了,
但還沒來的及執行 , Thread就結束了 , 所以整個Thread 被close掉, 所以就叫不出來.
kkebbc
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週五 5月 14, 2010 10:03 pm


回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客