C++ QProcess不支持';运行rsync时,不显示任何输出
我在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::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
,以不显示消息/提示等?