QProcess调用写入功能失败

时间:2013-02-24 09:39:52

标签: qt qprocess

我需要调用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"

谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

你在这里尝试做什么还不是很清楚。你的代码没有意义:你不能发送xterm'某些数据'(看起来你希望它为你执行一些命令,这里 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();