之前有在Qt中运行Linux命令并且获取命令行返回值的需求,所以研究了一下方法

由于需要获取返回的内容,所以用的是 QProcess::start(),然后用readAll()获取返回值,这个网上很多用法

但是运行某些命令时因为权限原因需要输入密码,而搞来搞去都不能实现在QProcess中的互动,在这里卡了好久,直到找到了一种可以在输入命令时同时输入密码的方法,这样用一行命令就可以搞定了,格式如下:

 

echo 当前用户密码 | sudo -S 你的命令

 

这个是利用了Linux的管道命令加sudo的-S参数实现的,一开始用得还挺好的,某天发现失灵了(Linux是安装在虚拟机里的),用QProcess运行这个命令就只会打印出echo之后的内容,而用Linux的终端则运行正常,原因不明,请教大神之后得到了解决方法,就是把整个命令用双引号括起,在前面加sh -c就行了,例如:

 

sh -c “echo 当前用户密码 | sudo -S 你的命令”

 

要注意双引号在代码中的转义


Logo

更多推荐