c++ - 命令使用 shell 运行但卡在 QProcess 中

标签 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

跟踪命令:

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

有什么建议吗?

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);
}

最佳答案

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

关于c++ - 命令使用 shell 运行但卡在 QProcess 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046160/

相关文章:

linux - 在 fd 上实现的计时器

linux - 如何阻止sed插入换行符?

c++ - Qt 中的 cin 等价物

qt - QML 组合框样式

c++ - OpenSSL AES_cfb128_encrypt 公钥/私钥 C++

c++ - 使用 new 时将指针转换为 void* 的优势

c++ - 使用MYSQL Server 5.5完成端到端教程C++

linux - cd//是什么意思(将目录更改为//)

c++ - QT 中的 INCLUDEPATH 不起作用

C++:简单的任务,多次调用析构函数