我正在尝试使用 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
跟踪命令:
- 等待 4(-1,
- 阅读(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/