Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt5 Qprocess调用命令行程序以获得实时输出_C++_Qt_Stdout - Fatal编程技术网

C++ Qt5 Qprocess调用命令行程序以获得实时输出

C++ Qt5 Qprocess调用命令行程序以获得实时输出,c++,qt,stdout,C++,Qt,Stdout,我使用QProcess运行另一个程序。命令为airodump ng mon0。 它的输出随时都在变化,而且完全不同,也不像ping命令那样,是按行变化的。我希望使用QProcess运行该程序,并在其仍在运行时获取其输出 代码如下: 在程序airodump ng中,我已经添加了代码setvbufstdout,char*NULL,_IONBF,0;使用行缓冲。您是完全没有得到输出,还是不是像您希望的那样立即得到输出?根本没有输出,但当我将commond更改为ping并添加myprocess->wai

我使用QProcess运行另一个程序。命令为airodump ng mon0。 它的输出随时都在变化,而且完全不同,也不像ping命令那样,是按行变化的。我希望使用QProcess运行该程序,并在其仍在运行时获取其输出

代码如下:
在程序airodump ng中,我已经添加了代码setvbufstdout,char*NULL,_IONBF,0;使用行缓冲。

您是完全没有得到输出,还是不是像您希望的那样立即得到输出?根本没有输出,但当我将commond更改为ping并添加myprocess->waitForFinished;如果我没有使用waitForFinished,它也没有输出。我不是专家,但是如果它在等待密码,或者如果你得到的是sudo的输出,而不是它正在运行的命令,那么命令中有sudo可能是个问题。如果在shell中运行命令时重定向输出,它是否有效?只是想知道它是否使用了stderr或其他奇怪的东西。我不认为sudo是一个问题。首先我使用option-一种方法,我使用sudo_ASKPASS,这样我就不必在sudo之后输入密码。其次我将ping改为sudo ping,它工作得很好,并得到了正常的ping输出。所以我仍然认为问题在QProcess中,也许我用错了_T@circleone你解决过这个问题吗?
pushButton_clicked()
{
    myprocess = new QProcess(this);
    connect(myprocess,SIGNAL(readReadStandardOutput()),this,SLOT(outlog()));
    myprocess->start("sudo -A ./airodump-ng mon0");
}

outlog()
{
    QString abc = myprocess->readAllStandardOutput();
    textEdit->setText(abc);
}