【发布时间】:2016-07-02 22:50:24
【问题描述】:
我正在尝试使用 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 命令:
- wait4(-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);
}
【问题讨论】:
-
两者都具有相同的
/path?因为可能有一些不好的符号。 -
没问题,我用/tmp试过了。