0

我需要调用 QProcess 来启动 xterm,然后我应该向它发送一些数据。为什么这些代码不能正确运行?

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"

感谢您的帮助

4

1 回答 1

2

您在这里尝试做什么还不是很清楚。您的代码没有意义:您无法将 xterm 'some data' (看起来您希望它为您执行某些命令,此处为ls)发送到其标准输入。

如果您想要ls的输出,只需执行以下操作:

QProcess proc;
proc.start("ls");
proc.waitForFinished();
qDebug() << proc.readAllStandardOutput();

如果您希望解释器在后台运行,您可以发送命令让它执行(如 shell),您可以执行以下操作:

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();
于 2013-02-24T12:10:36.953 回答