Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QProcess调用写入函数失败_Qt_Qprocess - Fatal编程技术网

Qt QProcess调用写入函数失败

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来启动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"
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()上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();