我正在使用Qt Creator在Linux上编写一个小型应用程序。当我启动我的应用程序时,我希望它执行一个shell命令。我正在像这样使用QProcess:
int main(int argc, char *argv[])
{
MyApplication a(argc, argv);
QProcess mapProc(&a);
QString command;
QStringList args;
command = "java";
args << "-jar" << "/home/$USER/MapServer/map.jar" << "localhost" << "9797" << "12123";
mapProc.start(command, args);
bool flag = mapProc.waitForStarted();
QProcess::ProcessState state = mapProc.state();
qDebug() << mapProc.errorString();
qDebug() << mapProc.pid();
/*/////////////////
some code
/////////////////*/
return a.exec();
}
但是当我的应用程序启动时,进程“ mapProc”变成了僵尸。为什么?我究竟做错了什么?
$USER
不会真的与那样工作QProcess
。您将需要通过以下命令调用命令,/bin/sh -c "mycmd"
或者甚至更好地调用该命令,如果您按照以下指示的正确的Qt方式执行该命令。
尝试使用QStandardPaths,因此编写以下代码:
QString homeLocation =
QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
args << "-jar" << QString(homeLocation.first() + "/MapServer/map.jar")
<< "localhost" << "9797" << "12123";
而不是这样:
args << "-jar" << "/home/$USER/MapServer/map.jar"
<< "localhost" << "9797" << "12123";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句