QProcess 没有启动
Posted
技术标签:
【中文标题】QProcess 没有启动【英文标题】:QProcess does not start 【发布时间】:2018-03-09 09:35:11 【问题描述】:由于某种原因,我无法在 Ubuntu 上使用 QProcess 启动进程,我不明白为什么...
int main(int argc, char *argv[])
//Run the process:
QString procName = "./path/to/executable/Individual";
QProcess *proc = new QProcess();
proc->start(procName);
if(!proc->waitForStarted())
std::cout<<"Fail!"<<std::endl;
getchar();
return 0;
int exitCode = proc->exitCode();
std::cout<<"Exit code: "<<exitCode<<std::endl;
getchar();
return 0;
这总是将“失败”打印到终端。
如果我在终端中输入./path/to/executable/Individual
,它工作得很好,所以路径似乎是正确的。
谁能告诉我为什么程序无法启动?
我在 Ubuntu 上使用 Qt 版本 5.9.1。
【问题讨论】:
问题出在应用程序的当前工作目录中。当您使用相对路径时,它无法找到您的可执行文件。尝试改用完整路径或从正确的位置启动应用程序。 您应该使用QFileInfo::exists() 确保您的程序可以访问Individual
@vahancho:不,路径是绝对的(以 /home/[用户名]/ 开头)
@Antwane:刚试了一下,qFileInfo说文件存在。
当然,以点开头的路径不是绝对的,而是相对的
【参考方案1】:
由于您使用的是 Linux,因此您可以
sudo ln -s /path/to/executable/Individual /usr/local/bin/individual
然后试试:
proc->start("individual");
【讨论】:
然后在控制台输入individual
启动程序?
哎呀,大写问题...是的,它似乎现在开始甚至结束,虽然退出代码给出了 255 我期望 -1,这可能是一个签名/未签名的问题吗?跨度>
另外,为什么它以这种方式工作,而不是从绝对路径?
是的,我在文件名前使用了点,正如我从 QProcess 文档中理解的那样,显然我不应该这样做。你的回答让我看到了。是的,我发现返回码 255 是有符号/无符号问题。谢谢!【参考方案2】:
你可以试试:
proc->start("cd /usr/local/bin/ && individual");
【讨论】:
以上是关于QProcess 没有启动的主要内容,如果未能解决你的问题,请参考以下文章