从 QtProcess 运行 Linux 二进制文件时为其提供参数

Posted

技术标签:

【中文标题】从 QtProcess 运行 Linux 二进制文件时为其提供参数【英文标题】:Supplying parameters to a Linux binary while running it from QtProcess 【发布时间】:2013-03-22 12:35:40 【问题描述】:

Qprocess的标准使用方式如下:

 QObject *parent;
 ...
 QString program = "./path/to/Qt/examples/widgets/analogclock";
 QStringList arguments;
 arguments << "-style" << "motif";

 QProcess *myProcess = new QProcess(parent);
 myProcess->start(program, arguments);

但是,我要做的是在控制台 (sh) 上运行二进制文件,然后将输出从那里复制到 Qt 中的文本框。

所以现在我需要在myProcess-&gt;start(program, arguments); 中做的是在程序中传递sharguments 中的二进制名称。但是,如果我的二进制文件也接受命令行参数怎么办?我在哪里供应?

【问题讨论】:

【参考方案1】:

你可以使用arguments()

#include <QApplication>

...

QStringList myArgs = qApp->arguments();

myProcess->start(program, myArgs);

【讨论】:

【参考方案2】:

我试过了:

/home/user/1.sh

#!/bin/sh

echo $1 >> /home/user/1.out
echo $2 >> /home/user/1.out
echo $3 >> /home/user/1.out

main.cpp

#include <QtCore>

int main(int argc, char *argv[])

    QCoreApplication a(argc, argv);

    QString program = "sh";
    QStringList args;
    args << "/home/user/1.sh" << "qwe" << "123" << "c c c";

    QProcess p;
    p.start(program, args);
    p.waitForFinished();

    return 0;

运行我的应用后,我得到:

1.out

qwe
123
c c c

似乎对我有用。

【讨论】:

以上是关于从 QtProcess 运行 Linux 二进制文件时为其提供参数的主要内容,如果未能解决你的问题,请参考以下文章

Qt QProcess::finished() 信号没有这样的插槽

为啥 32 位内核可以运行 64 位二进制文​​件?

无法在 64 位 Debian 上运行 32 位二进制文​​件

gcc:在 32 位平台上编译 64 位二进制文​​件

在 unix 中找不到 db2 命令

linux中利用write函数来写是不是只能写文本文档,而不能写二进制文件?