crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как передать команду в консоль из своего приложения
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 22:22
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Как к примеру мне послать в терминал "uname -a" и получить обратно то что выведется.
То есть чтоб получилась переменная с тем что выдала консоль.
ну или к примеру тот же wget трататат :rolleyes:
PS Ubuntu 10.04 | QT 4.7
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 4.10.2010, 22:28
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


смотри QProcess
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 22:58
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


#include <QtCore/QCoreApplication>
#include <QProcess>
#include <QtDebug>

int main()
{
    QObject *parent;
    QString program = "uname";
    QStringList arguments;
    arguments << "-a";
    QProcess *myProcess = new QProcess(parent);
    myProcess->start(program, arguments);
    qDebug()<<myProcess->readAll();
}


The program has unexpectedly finished. :mad:

Сообщение отредактировал RazrFalcon - 4.10.2010, 22:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 5.10.2010, 6:44
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


#include <QtCore/QCoreApplication>
#include <QProcess>
#include <QtDebug>

int main( int argc, char *argv[] )
{
    QCoreApplication app( argc, argv );

    QString program = "uname";
    QStringList arguments;
    arguments << "-a";
    QProcess myProcess;
    myProcess.start(program, arguments);
    myProcess.waitForFinish();
    qDebug()<<myProcess.readAll();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.10.2010, 11:52
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Как всегда ответ был рядом.
myProcess.waitForFinished();
я тоже пробовал тока видать до конца не довел. У вас кстати опечатка в вашем примере waitForFinish->waitForFinishedю :rolleyes:
Все пашит. Огромное спасибо.
Единственный вопрос:
int main( int argc, char *argv[] )
{
    QCoreApplication app( argc, argv );
Почему так, я просто не совсем понимаю.

(через два часа)
Подождите, так только myProcess.waitForFinished(); и нужен был =/
она без всего остального и так прекрасно работает :blink:

И еще:
qDebug()<<myProcess.readLine();
выдает:
Цитата
"13
"

но вот qDebug()<<myProcess.readLine().toInt();
выдает все время 0, почему?!

__________________________________
    QString s=myProcess.readLine();
    qDebug()<< s.toInt();

Все пашит, всем спасибо.

Сообщение отредактировал RazrFalcon - 5.10.2010, 17:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 2:40