C++ QProcess不支持';运行rsync时,不显示任何输出

C++ QProcess不支持';运行rsync时,不显示任何输出,c++,qt,rsync,C++,Qt,Rsync,我在QProcess中启动rsync。如果我使用QProcess::startDetached(),我的进程运行良好(在它自己的终端中),但如果我使用QProcess:start()启动它,则什么也不会发生。问题似乎是QProcess显然无法从rsync读取消息并将其写入输出窗口 我已经把这个信号连接到构造器里了 MainWindow::~MainWindow() { process = new QProcess(this); connect( process, SIGNAL(

我在QProcess中启动rsync。如果我使用
QProcess::startDetached()
,我的进程运行良好(在它自己的终端中),但如果我使用
QProcess:start()
启动它,则什么也不会发生。问题似乎是QProcess显然无法从rsync读取消息并将其写入输出窗口

我已经把这个信号连接到构造器里了

MainWindow::~MainWindow()
{
    process = new QProcess(this);

    connect( process, SIGNAL(readyReadStandardOutput()), this, SLOT(onReadyReadStandardOutput() ) );
}
稍后单击按钮,我呼叫:

void MainWindow::onButton1Clicked()
{
    process->start("rsync -a root@10.0.0.1:/path/ /rsync_folder");

    //process->start("ping 10.0.0.01"); // this works for testing and I see output but not the above.
}
当rsync启动时,它打印一条消息并询问密码。我的QProcess没有收到任何消息,但收到了
ping
消息。这里可能有什么问题

上面的悲伤行也可以直接在Windows7命令行上运行,但它似乎没有显示QProcess中的任何进展

更新

下面是我如何显示输出的

void MainWindow::onReadyReadStandardOutput()
{
    qDebug() << process->readAllStandardOutput();
}
void主窗口::onReadyReadStandardOutput()
{
qDebug()readAllStandardOutput();
}

您是否记得链接并检查标准错误通道

这在过去的一些QProcess中为我修复了它

另一种方法是使用
QProcess::startDetached()


希望能有所帮助。

我的研究表明rsync的行为可能类似于scp,因此在重定向时不会生成输出

请澄清,您如何知道在您的应用程序中收到来自
ping
命令的消息?除非您通过
readAllStandardOutput
方法从
QProcess
中显式读取它们,然后将其写入日志或其他地方,否则它们不应可见。@olegandriyanove我已将插槽连接到它,并且我正在使用
qDebug()
打印到带有StartedDetailed()的输出窗口您根本得不到任何输出,是吗?
QProcess:startDetached()
对我来说也很有用,但它自己在命令行上运行,这是我不想要的。我确实调用了
readAllStandardOutput()
,但它看不到任何数据。我认为问题的一部分似乎是当我rsync(甚至在命令行上)时,windows有时会打开安全对话框以允许访问网络(它有时会打开,但并非总是这样)。这可能会保留进程,但在运行
QProcess
时,此对话框永远不会显示。也许有一种方法可以禁用此对话框,并使用参数启动
rsysnc
,以不显示消息/提示等?