关于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自身的,不能识别这两种符号。

仅作记录。

猜你喜欢

转载自blog.csdn.net/mynameislinduan/article/details/105241347