我正在做一个 C++ 项目,我需要在我的程序中初始化一个 octave 进程,并将 octave 命令写入 octave 标准输入,并从 octave 标准输出和标准错误中获取结果。
我搜索并发现 octave forge 引擎包可以完成这项工作。但我找不到如何使用该软件包。我只想执行简单的命令,例如 5+5 并得到答案。
有没有办法使用八度引擎包或使用任何其他方式来做到这一点。
首先,我使用 Qt创建了一个QProcess 。
QStringList arguments;
arguments << "--persist"; //set arguments of the octave process. --persist:Go interactive after
octave.setProcessChannelMode(QProcess::MergedChannels); //set process channel
octave.start("/usr/bin/octave", arguments);//If octave has installed into any other directory this should be changed.
之后,我能够写入八度音程的标准输入。
if(octave.state()==QProcess::Starting){
octave.waitForStarted();
//TODO:should set a timeout and if timeout happens set a error report.
processWrite(command);
}
else if(octave.state()==QProcess::Running){
//TODO write Code
octave.waitForReadyRead(1000);//wait until Standered output ready
if(command.isEmpty()){
return;
}
else{
command+="\n";
octave.write(command.toUtf8());
}
}
else{
//TODO: Error reporting
}