linux - 在 Linux 中通过 QProcess 执行 gzip

标签 linux qt qt4 gzip

我正在尝试在 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/

相关文章:

javascript - 有没有办法在Linux上从Electron读取缓存文件?

linux - 使窗口保持在对话框中

linux - Yocto Custom Image Recipe 不会将文件安装到最终的 rootfs 中

c++ - 把QPixmap画成一个圆圈?

c++ - 通过在 QT QML 中单击鼠标来重复矩形

qt - 函数运行时如何设置标签文本?

php - Fail2ban - 使用 exec 或 shell_exec 从 php 脚本手动添加 ip

c++ - 为什么我在关于文件编码格式的 qt 代码中得到乱码结果?

python - PyQt,在Qwidget上点击 Action

qt - 使用 N 个点创建弯曲路径