LINUX.ORG.RU

QProcess в Linux - не выполняется «cd /path/ && ./file»

 , ,


0

1

Очень нужно это извращение для работы программы. Если отправляю с клиента Json:

mSocket->write("{\"operation\":0,\"command\":\"kate\"}");

На сервере:

QProcess* process = new QProcess(this);
process->start(QString::fromStdString(requestData.get<std::string>("command")));

…то все работает. Но если послать такую команду (а мне нужно именно в таком формате):

mSocket->write("{\"operation\":0,\"command\":\"cd /usr/bin && ./kate\"}");

…то нет. Причем в консоли работает, но через QProcess нет. В чем проблема? Что-то с путями?

ты смешиваешь фишки шела и запуск обычного процесса, с фичами шела попробуй ::system(«ls -al»);

sparks ★★★★
()

Запускай процесс шелла, а уже ему передавай в качестве аргумента сложную команду. QProcess может только запустить 1 программу и передать ей параметры. Такие фичи как конвейеры и перенаправление вывода он не умеет, потому что по факту их реализует шелл.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)

Ты можешь попробовать так внутри команды: "bash -c \"cd /usr/bin && ./kate\""

I-Love-Microsoft ★★★★★
()

спасибо всем! Все советы были полезны. Сделала через setWorkingDirectory(), работает.

Irbis88
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.