刚刚,做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自身的,不能识别这两种符号。
仅作记录。