c++ - 使用 QProcess 向服务器发送命令
问题描述
我使用 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();
}
}
推荐阅读
- node.js - 上传文件到谷歌云
- ios - 如何解决转义闭包捕获'inout'参数'data'
- python - 所有可能的整数集,总和为零
- azure-devops - 如何在 Azure Build 上重新启动 ubuntu 代理?
- mysql - MySql - 如何根据加入另一个表的多个值从一个表中选择行
- sql - 多个内连接和子查询的查询优化
- javascript - Express.js:TypeError:res.sendFile 需要路径参数
- android - 所有现有项目的 Android Things 控制台将于 2022 年 1 月 5 日关闭
- json - 使用 ArduinoJson 库无法使用 JsonObject 解析 Json
- mongodb - .Net核心字典中的Mongodb $inc运算符