Russian Qt Forum
Апрель 29, 2024, 06:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с Qprocess  (Прочитано 3832 раз)
build1423
Гость
« : Январь 31, 2013, 17:27 »

Здравствуйте. Есть кусок кода:
    QProcess termimal;
    termimal.start("xterm");
    termimal.waitForStarted(2000);
    termimal.write("ls\n");
    termimal.waitForFinished();
    termimal.close();
Если кто не понял, я хочу с помощью Qprocess вызвать терминал и выполнить в нём команду. Окно терминала открывается, но самой команды ls и результата нету. Почему?
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Январь 31, 2013, 17:38 »

Ну как бы терминал обеспечивает ввод/вывод для процессов. Он сам никакие команды не выполняет, это делает shell.
Запускай один из них, например bash (/bin/bash).
« Последнее редактирование: Январь 31, 2013, 17:49 от Old » Записан
build1423
Гость
« Ответ #2 : Январь 31, 2013, 18:00 »

Запускай один из них, например bash (/bin/bash).
М, хорошо. Сменил
termimal.start("xterm");
на
termimal.start("sh", QStringList() << "-c");
Ничего не изменилось. Только ж теперь ясное дело не выскакивает окно xterm.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Январь 31, 2013, 18:23 »

man xterm. Опция -e.
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #4 : Январь 31, 2013, 18:25 »

Только ж теперь ясное дело не выскакивает окно xterm.
Тебе ехать или шашечки? Улыбающийся
Код
C++ (Qt)
#include <QCoreApplication>
#include <QProcess>
#include <QDebug>
 
int main( int argc, char *argv[] )
{
       QCoreApplication app( argc, argv );
 
       QProcess process;
       process.start( "/bin/bash" );
       process.waitForStarted();
 
       process.write( "ls\n" );
       process.waitForReadyRead();
       qDebug() << process.readAll();
 
       process.write( "ls /\n" );
       process.waitForReadyRead();
       qDebug() << process.readAll();
 
       process.write( "exit\n" );
       process.waitForFinished();
 
       return 0;
}
 
Записан
build1423
Гость
« Ответ #5 : Январь 31, 2013, 23:34 »

Спасибо, Old. Получилось... Только неясно, зачем было QDebug подключать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 23.