命令与shell一起运行,但卡在QProcess中

时间:2016-03-16 20:20:12

标签: c++ linux qt qprocess

我试图用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

strace命令:

  1. wait4(-1,
  2. 读(0,
  3. 有什么建议吗?

    P.S。:另一个命令clamscan /path params适用于QProcess。

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

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

1 个答案:

答案 0 :(得分:0)

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