• 2317阅读
  • 4回复

[讨论]Qprcoess 一个比较坑的问题 [复制链接]

上一主题 下一主题
离线onlyone
 

只看楼主 倒序阅读 楼主  发表于: 2019-08-16
qt5.7版本。 Qprcoess 的void QProcess::setArguments(const QStringList &arguments)


用这个区把所有的参数传递给执行程序。但是发现这样不行。比如


Qprcess proc;
QStringList args;
args << "-i" << "123456" << "-f" <<"out";
proc.start("myexe",args);


发现执行总是报错。但是如果这样写
QStringList args;
args << "-i 123456  -f out;
就没问题。感觉这个参数列表没法使用列表,只能使用一个字符串。


还有就是,读取不到myexec输出到屏幕的信息。
挂接该void readyReadStandardOutput()信号,槽函数从来就没法执行。

是否有人遇到过这类诡异问题?

离线小韩老师

只看该作者 1楼 发表于: 2019-08-16
使用过该类,通过标准输入输出std::out等,可以获取输出的数据。检查一下是否是标准输出?
离线liulin188

只看该作者 2楼 发表于: 2019-08-17
我是用wait阻塞
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线fsu0413

只看该作者 3楼 发表于: 2019-08-17
myexe如果是你自己写的程序的话,检查一下参数处理机制。如果只是像你这么写可以用的话,多半那个程序的参数处理就是错的。
如果你在命令行里运行过myexe的话,我想看下你的调用方式。

一般程序的输出有两个通道,一个标准输出,还有一个是标准错误。
命令行运行的时候标准输出和标准错误都会在命令行中输出,看起来没啥区别,但是在编程的时候需要考虑标准输出和标准错误两个通道都输出什么。
挂readyreadstandardoutput信号没反应的话,检查一下输出是否在标准错误里。
离线hehui

只看该作者 4楼 发表于: 2019-08-26
你这个问题我遇到过刚好相反的,参数写成一个字符串不行,分开成list就行 了,这个可能跟被调用程序或操作系统有关
快速回复
限100 字节
 
上一个 下一个