gpt4 book ai didi

c++ - 使用 QProcess 向服务器发送命令

转载 作者:行者123 更新时间:2023-11-30 04:58:16 25 4
gpt4 key购买 nike


我使用 QProcess 做了一个简单的例子。
只需从 DBpedia 服务器获取 json 值。
Q.如何使用QProcess制作命令?

原始命令
curl -s "http://dbpedia.org/data/Haeinsa.json"| perl dbpediaPlaceData.txt 'Haeinsa'

我的代码

1. 从 DBPedia 服务器获取 JSON 值
#include <QCoreApplication>
#include <QDebug>
#include <QProcess>
#include <QFileInfo>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QString command="curl";
QProcess pro;
QStringList arg;
arg.append("-v");
arg.append("--insecure");
arg.append("GET");
arg.append("http://dbpedia.org/data/Haeinsa.json");

pro.execute(command,arg);
pro.start(command);
pro.waitForStarted();
pro.waitForReadyRead();
pro.waitForFinished();

QByteArray qa=pro.readAll();
QString reply=QString::fromUtf8(qa);
qDebug() << reply;

return a.exec();
}
2. perl dbpediaPlaceData.txt '海印寺'
void processPerl()
{
QString command = "perl";
QString fileName ="/Users/yoshimi/dbpediaPlaceData.txt ";
QString cmd = "perl" + fileName + "Haeinsa";

QProcess* process_screen = new QProcess();
process_screen->start(cmd);

process_screen->waitForStarted();
QByteArray q=process_screen->readAll();
QString replyB=QString::fromUtf8(q);
qDebug() << replyB;

}

最佳答案

据我了解,您想使用QProcess 实现命令,因此主要困难在于实现管道:|,在这种情况下您必须使用setStandardOutputProcess():

QProcess curlProcess;
QProcess perlProcess;
QString filename = "/Users/yoshimi/Music/cridb/dbpediaPlaceData/dbpediaPlaceData.txt";
curlProcess.setStandardOutputProcess(&perlProcess);
curlProcess.start("curl", {"-s", "http://dbpedia.org/data/Haeinsa.json"});
if (curlProcess.waitForFinished()){
perlProcess.start("perl", { filename, "Haeinsa"});
if(perlProcess.waitForFinished()){
qDebug()<< perlProcess.readAll();
}
}

关于c++ - 使用 QProcess 向服务器发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51750422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com