關於linuxqt中使用qprocess執行命令的問題

剛剛,做qt寫的一個演示程序,跑在嵌入式linux系統,但是用qprocess執行 “echo xxx> /home/xxx.txt” 的時候發現一個器官的的問題,這個居然,不能用echo輸出文件??

經過調試發現,在qt linux程序,不能直接運行 echo XXX > 等讀寫文件,是因爲帶“>”重定向。
同樣,qprocess也不能帶管道。
我嘗試用system來做,但是一樣無效,也不報錯。
但是,可以用過調用shell腳本來讀寫文件!這個可能跟程序的用戶組或權限有關。於是只能改用調用腳本,linux qporocess的問題解決!

在網上也看到一個博客這樣寫:

在linux系統下,Qt執行shell命令的方式有3種:

(1)QProcess:execute(“ls”);

(2)system(“ls”);

(3)QProcess *process = new QProcess(); process->start(“ls”);

注1:以上3中方法都可以,但是前兩種會阻塞進程,直到ls結束,而第三種不會阻塞進程,可以多任務運行。

注2:當命令中存在管道(|)和重定向(>)時,只能使用第二種,第一種和第三種屬於Qt自身的,不能識別這兩種符號。

僅作記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章