Почему возникший процесс начался как зомби в Qt-app. Linux

Я пишу небольшое приложение на Linux с использованием QT Creator.
Когда я запускаю свое приложение, я хочу, чтобы оно выполняло команду оболочки. Я использую 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» становится зомби. Зачем? Что я делаю неправильно?

2

Решение

$USER не будет так работать с QProcess, Вам нужно будет вызвать команду через /bin/sh -c "mycmd" или даже лучше, если вы просто сделаете это надлежащим образом, как указано ниже.

Попробуйте использовать 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";
1

Другие решения


По вопросам рекламы [email protected]