簡體   English   中英

QProcess 無法將命令寫入程序

[英]QProcess can't write commands to program

所以我想用QProcess打開stockfish並編寫命令isready,stockfish回復readyok。 我在終端中嘗試了完全相同的命令,它工作正常。 但是,當我嘗試在 QProcess 中執行此操作時,它只會在 stockfish 打開時讀取開頭行“Stockfish 開發人員的 Stockfish 100521(請參閱 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()並在從標准錯誤或 output 緩沖區讀取之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM