我正在启动一个QProcess来打开cmd.exe。
我想写入std in将命令发送到cmd.exe,我想收到它的输出。
QProcess mProcess = new QProcess(this);
mProcess->setReadChannelMode(QProcess::SeparateChannels);
mProcess->start("cmd");
QApplication::processEvents();
QString s(mProcess->readAllStandardOutput());
writeToConsole(s);
这一切都很好。过程开始,我得到输出。但是,我现在不能再写这个过程了。我查看了QProcess文档,但我没有看到任何写入标准的方法。我已经尝试过mProcess-> write(data);但那没有做任何事情。
如何将标准写入正在运行的进程?
答案 0 :(得分:1)
您必须仅使用write
函数来写入标准。
但重要的是你必须使用void QProcess::closeWriteChannel()
关闭写通道。
请参阅以下文档。
答案 1 :(得分:0)
在继续下一步行动之前,您应该等待操作完成。
<CFSET RoundedValue = ceiling(totalWeight / 5) * 5>
将输出直接发送回正在执行的程序似乎很奇怪。或者,您可以将QProcess mProcess = new QProcess(this);
mProcess->setReadChannelMode(QProcess::SeparateChannels);
//Start the process
mProcess->start("cmd");
QApplication::processEvents();
mProcess->waitForStarted();
// Read the output
mProcess->waitForReadyRead();
QString output(mProcess->readAllStandardOutput());
mProcess->closeReadChannel();
// Write the data
mProcess->write(output);
mProcess->waitForBytesWritten();
mProcess->closeWriteChannel();
// Wait for finished
mProcess->waitForFinished();
信号连接到可在其他位置处理输出的插槽。
答案 2 :(得分:0)
我在这里犯的错误不是将\ n放在多个命令的末尾。
''''
// 1st command
mProcess->write(output1 + "\n");
mProcess->waitForBytesWritten();
// 2nd command
mProcess->write(output1 + "\n");
mProcess->waitForBytesWritten();
// Wait for finished
mProcess->waitForFinished();
mProcess->closeWriteChannel();
''''