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();

バックグラウンドで実行されているインタープリターが必要な場合は、コマンドを送信して実行することができます (シェルのように)。次のようにします。

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 に答える