2016-04-24 198 views
-1

我希望程序來檢查腳本已經開始,如果沒有 - 然後啓動它(在終端和如何從QT程序中啓動終端中的bash腳本?

謝謝! ;-)

QProcess *proc = new QProcess(); 
    proc->setWorkingDirectory("/home/user/Documents/"); 
    proc->start("/home/user/Documents/script.sh"); 

    delete proc; 
+0

歡迎來到SO,請展示您的編碼工作,SO不是代碼編寫服務。 – Cyrus

回答

2

QProcess中做

proc->start(...); 
delete proc; 

你殺了它儘快asyncronously運行外部腳本,所以它開始(或者甚至之前)。嘗試在刪除之前添加waitForFinished()。

proc->start(...); 
proc->waitForFinished(); 
delete proc; 
+0

謝謝!但如何檢查腳本是否已在運行? – user3027198

+0

是否需要'刪除proc',即使我的** exit **命令在我的腳本結尾? – user3027198

+1

只有你的程序會啓動腳本嗎?如果是這樣,那麼QProcess的state()函數會告訴你它是否正在運行。是的,一旦完成,您將需要刪除QProcess。當腳本結束時,QProcess仍將包含它使用的輸入和輸出流以及它保存的任何其他狀態,直到它被刪除。這是一件好事,否則一旦劇本結束,你無法訪問它輸出的任何數據。 – David