如何解决QProcess 无法向程序写入命令
所以我想用 QProcess 打开 stockfish 并编写命令 isready,stockfish 回复 readyok。我在终端中尝试了完全相同的命令,在那里它工作正常。但是,当我尝试在 QProcess 中执行此操作时,它仅在 Stockfish 打开时读取起始行“Stockfish 100521 by the Stockfish 开发人员(请参阅 AUTHORS 文件)”。在我发出命令后,它不会回复“readyok”。
我的命令写错了还是我的等待命令错了?如果这个问题结构不合理或支持不当,我很抱歉,因为我是新手。
QProcess OProcess;
QString Command; //Contains the command to be executed
QStringList args; //Contains arguments of the command
Command = "path/Stockfish/src/stockfish";
args<<"";
OProcess.start(Command,args,QIODevice::ReadWrite); //Starts execution of command
OProcess.waitForFinished(); //Waits for execution to complete
QString StdOut = OProcess.readAllStandardOutput(); //Reads standard output
QString StdError = OProcess.readAllStandardError(); //Reads standard error
qDebug()<< "\n Printing the standard output..........\n";
qDebug()<< endl<<StdOut;
qDebug()<<"\n Printing the standard error..........\n";
qDebug()<<endl<<StdError;
OProcess.write("isready");
OProcess.waitForFinished(); //Waits for execution to complete
OProcess.waitForReadyRead();
StdOut = OProcess.readAllStandardOutput(); //Reads standard output
StdError = OProcess.readAllStandardError(); //Reads standard error
qDebug()<< "\n Printing the standard output:\n";
qDebug()<< endl<<StdOut;
qDebug()<<"\n Printing the standard error:\n";
qDebug()<<endl<<StdError;
return 0;
解决方法
你需要等待触发这个信号
void readyReadStandardError() void readyReadStandardOutput()
以及从标准错误或输出缓冲区读取之后。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。