我正在尝试在 Linux 中执行函数“gzip -c file.bin > file.zip”。这在命令行上运行良好,但我需要使用 Qt 4.8.2 从我的应用程序中调用它。如果我尝试:
QProcess *pProc = QProcess(this);
connect(pProc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(onFinished(int, QProcess::ExitStatus)));
pProc->start("gzip -c file.bin > file.zip");
然后 onFinished() 报告 exitCode 为 1。我试过:
pProc->start("gzip", QStringList << "-c" << "file.bin" << ">" << "file.zip");
或改为使用 startDetached(),但我找不到有效的组合。
最佳答案
此问题:pProc->start("gzip -c file.bin > file.zip"); 是 QProcess 将命令后字符串中的每个项目解释为要传递给命令的参数。因此,它将传递 gzip 不理解的项目,例如“>”。
您需要做的是单独处理重定向,或者更改命令的调用方式。你可以尝试这样的事情:-
pProc->start("bash -c \"gzip -c file.bin > file.zip\"");
Bash 可以使用 -c 参数将命令字符串作为输入,因此我们将字符串括在引号中并将其传递给 bash 解释器。
关于linux - 在 Linux 中通过 QProcess 执行 gzip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515707/