命令使用 shell 运行,但卡在 QProcess 中

Command run with shell but get stuck with QProcess

本文关键字:QProcess shell 运行 命令      更新时间:2023-10-16

我正在尝试使用 QProcess 执行一些命令。从终端执行工作正常。

例如,我想执行以下命令:fpscan /path --report --verbose=2 --nospin(使用 f-prot 防病毒软件扫描文件)。我正在尝试以下代码:

QProcess* p = new QProcess(this);
p->start("fpscan", params);

进程卡住了。

ps -Al | grep fpscan输出中我看到,这个过程打开了另一个进程。

process     |    WCHAN    |    TIME
1           |    wait     |  00:00:00
2           |    pipe_w   |  00:00:00

跟踪命令:

  1. 等待4(-1,
  2. 读取(0,

有什么建议吗?

PS:另一个命令clamscan /path params与QProcess一起工作。

更新:我尝试使用fork,execl并且它可以工作,所以问题出在QT和QProcess上。

pid_t pid = fork();
if (pid == 0) {
    execl("/usr/local/bin/fpscan", "fpscan", "/path", ... , NULL);
}

看起来进程正在尝试从标准输入中读取。