Qt QProcess调用写入函数失败
我需要调用QProcess来启动xterm,然后我应该发送一些数据 去吧。 为什么这些代码不能正确运行Qt QProcess调用写入函数失败,qt,qprocess,Qt,Qprocess,我需要调用QProcess来启动xterm,然后我应该发送一些数据 去吧。 为什么这些代码不能正确运行 QProcess proc; proc.start("xterm"); proc.waitForStarted(); proc.write("ls\n"); proc.waitForFinished(); proc.waitForBytesWritten(); qDebug()<<proc.readAllStandardOutput();//output: nothing qDeb
QProcess proc;
proc.start("xterm");
proc.waitForStarted();
proc.write("ls\n");
proc.waitForFinished();
proc.waitForBytesWritten();
qDebug()<<proc.readAllStandardOutput();//output: nothing
qDebug()<<proc.errorString();//output: "write error"
qprocessproc;
程序启动(“xterm”);
进程waitForStarted();
过程写入(“ls\n”);
进程waitForFinished();
proc.waitForBytesWrite();
qDebug()不太清楚您在这里尝试做什么。您的代码没有意义:您不能将xterm“一些数据”(看起来您希望它为您执行一些命令,这里是ls)发送到其标准输入
如果需要ls的输出,只需执行以下操作:
QProcess proc;
proc.start("ls");
proc.waitForFinished();
qDebug() << proc.readAllStandardOutput();
qprocessproc;
程序启动(“ls”);
进程waitForFinished();
qDebug()您正在调用的大多数函数都有返回值。检查这些返回值,找出哪里出了问题,怎么样?我已经试过了,除了最后一句话,一切都很好。你说“不能正确运行”是什么意思?它挂起来了吗?或者不在调试流中打印任何内容?我看不出xterm应该结束其工作的原因,所以您的代码可能挂起在proc.waitForFinished()上谢谢你的帮助,先生。我知道如何直接调用命令,我真正需要的是在控制台中调用qemu,在qemu初始化之后,我应该输入一些信息(使用QProcess?)如用户和密码。这里真正的问题是为什么我不能向xterm发送数据?对不起,我的英语不是我的母语。我对qemu一无所知,但也许你应该看看doc的emulator部分的获取数据。显然,你可以做一些事情,比如将模拟串口连接到quemu的stdin/stdout,然后像上面的shell那样与之通信。不过,我在这张照片中没有看到xterm。很可能,你想做的是不可能的。我建议您将问题的标题改为更具描述性的标题,如“如何从外部进程远程控制qemu?”。再次感谢您,您已经帮了我很多。无论如何,我仍然无法将数据发送到xterm,我将研究您的文档。我尝试了proc.start(“sh-c\”echo password | sudo-S command\”)
。这对我来说是可行的,但不是最好的解决方案。我会继续提问。不客气。我仍然不明白你想做什么。xterm、sudo和qemu之间有什么关系?我认为你应该试着在这里描述你真正想做的事情(并将问题标题改为更具描述性)。
QProcess proc;
proc.start("/bin/sh");
proc.waitForStarted();
Q_FOREACH( QString cmd, QStringList() << "ls" << "date" << "echo test" )
{
proc.write((cmd + "\n").toLocal8Bit());
proc.waitForReadyRead();
qDebug() << proc.readAllStandardOutput().split('\n');
}
proc.write("exit\n");
proc.waitForFinished();