Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Вызов команды терминала из приложения  (Прочитано 4932 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Edynchik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Здравствуйте! Подскажите пожалуйста, как вызвать команду терминала из мною написанного приложения?

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #1 : 21 Октября 2010, 11:26:55 »
`echo "Телепаты в отпуске!!!"`

Оффлайн Edynchik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #2 : 21 Октября 2010, 13:35:18 »
есть приложение с++,среда разработки qt creator, операционная система ubuntu 10.10 и хотелось бы что то вроде:
int i = 0;
//открыть терминал
//выполнить команду терминала
//закрыть терминал
i++

Оффлайн easy2002

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2786
  • Мурманск
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #3 : 21 Октября 2010, 14:02:43 »
man system
Tempora mutantur et nos mutantur in illis

Оффлайн Edynchik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #4 : 21 Октября 2010, 14:05:30 »
man system
ответ на грани фантастики, надеюсь ЧСВ у автора повысилось...

Оффлайн easy2002

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2786
  • Мурманск
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #5 : 21 Октября 2010, 14:09:16 »
#include <stdlib.h>
int main() {
  system("ls -l");
  printf("This is a directory list...");
}
Tempora mutantur et nos mutantur in illis

Оффлайн Edynchik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #6 : 21 Октября 2010, 14:15:49 »
#include <stdlib.h>
int main() {
  system("ls -l");
  printf("This is a directory list...");
}
я только учусь...не зныл про system...
спасибо,попробую...

Оффлайн GrandPeter

  • Любитель
  • *
  • Сообщений: 78
    • Просмотр профиля
    • Проект Голос это простой граф. интерфейс  для festival
Re: Вызов команды терминала из приложения
« Ответ #7 : 22 Октября 2010, 12:24:55 »
Используя Qt для запуска приложения (в том числе консольного) можно обратить внимание на QProcess.

Например, для запуска  festival:
#include "QProcess"

QProcess Ozvuchit;

//запускаем процесс
Ozvuchit.start("festival ");

    if (Ozvuchit.state() == QProcess::NotRunning)
    {
        //если процесс не запустился выводится сообщение о невозможности запуска
        QMessageBox msgBox;
        QString msg =QString::fromUtf8("festival не стартовал и программа не может синтезировать речь");
        msgBox.setText(msg);
        msgBox.exec();
    }

//производим запись команды для произношения ""Hello World" в процесс
 Ozvuchit.write("(SayText \"Hello World\")");

при завершении программы
//проверим запущен ли процесс
    if (Ozvuchit.state() == QProcess::Running) {
   
   //закроем канал
    Ozvuchit.closeWriteChannel();
    //ожидается завершение запущенного процесса
    Ozvuchit.waitForFinished();


Это же можно сделать:
  system("echo "+  (ui->RechText->toPlainText().toUtf8()) +  " | festival --tts --language russian");
Различие выразится в том, что для первого варианта после синтеза процесс Festival останется ожидать следующего обращения, в то время как во втором случае Festival закроется.

Реализация запуска TTS Festival из Qt использована в проекте
http://sourceforge.net/projects/golos/
можно скачать исходники и посмотреть, как это реализовано, если интересно более детально использование QProcess.
Всё что не происходит - всё к лучшему!

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Вызов команды терминала из приложения
« Ответ #8 : 23 Октября 2010, 19:44:14 »
...
я только учусь...не зныл про system...
спасибо,попробую...
да можешь даже имени своего не знать. а про справочную систему man знать должен... ну или хотябы про гугл.
вы от куда такие кадры лезите? надо там заштукатурить лазейку

 

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