терминал Linux mint не выполняет команды, заданные из Qt creator

#c #qt #linux-mint

#c #qt #linux-mint

Вопрос:

Привет, ребята. Я новичок в Qt creator, и теперь я пытаюсь подключить его к терминалу Linux Mint 18 MATE. Проблема в том, что я могу открыть терминал, но другие команды просто не выполняются. Вот код, который я пытаюсь —

 void access::on_pushButton_clicked(){

  QProcess process;
  process.start("mate-terminal cd /tmp");
  process.write("ls -Al");
  process.closeWriteChannel();

  process.waitForFinished();
  QByteArray output = sh.readAll();
  process.close();
     }
  

Все, что мне нужно с этим сделать, это —

  1. открыть терминал
  2. перейдите в каталог /tmp
  3. распечатайте содержимое

Любая помощь или подсказка о том, что я делаю неправильно, будут оценены. Спасибо!

Комментарии:

1. Почему бы не использовать QDir/QFileInfo для перечисления файлов из /tmp ?

Ответ №1:

Похоже, в этом случае вам не нужен пользовательский интерфейс терминала, поэтому вам не нужно открывать mate-terminal , вместо этого вы должны открыть sh . Также обратите внимание, что после вызова start метода вы должны waitForStarted .

 QProcess process;
process.start("sh");
process.waitForStarted();
process.write("ls /tmp -Al");
process.closeWriteChannel();
process.waitForFinished();
QByteArray output = process.readAll();
process.close();
qDebug() << output;
  

Примечание: sh является интерпретатором командной строки и имеет свой собственный язык сценариев, если вы хотите только начать ls , поэтому вы можете запустить его напрямую, не начиная sh сначала.

 QProcess process;
process.start("ls /tmp -Al");
process.waitForFinished();
QByteArray output = process.readAll();
process.close();
qDebug() << output;
  

Комментарии:

1. Ну, на самом деле мне нужен терминал, потому что я должен сказать ему, чтобы он выполнял команды через Qt Creator и отображал результат в окне терминала. Но спасибо за ответ.

2. @Qtstruggler Итак, если вам нужно окно терминала, зачем вы его закрываете? ( process.close(); )