Вроде как правильно запускать сначала shell и ему в качестве аргумента передавать команду для выполнения. Но если написать
process.waitForFinished(-1);
приложение повисает наглухо. Если указать какое-то определенное количество секунд для ожидания, то иногда проскакивает «QProcess: Destroyed while process is still running.»