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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: c++, выполнение консольных команд  (Прочитано 12992 раз)

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

Оффлайн verplas

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
c++, выполнение консольных команд
« : 30 Декабрь 2009, 17:41:51 »
можно ли в программе на c++ вызывать консольные команды?
т.е. при выполнении программы необходимо запустить консольное приложение, как это реализовать?

Пользователь решил продолжить мысль 30 Декабрь 2009, 18:31:25:
нагуглил, что нужно использовать popen. вроде работает, функция сишная
« Последнее редактирование: 30 Декабрь 2009, 18:31:25 от verplas »

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #1 : 30 Декабрь 2009, 18:53:17 »
Ещё system есть.
xUbuntu 12.04

Оффлайн verplas

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #2 : 30 Декабрь 2009, 19:14:21 »
Ещё system есть.
спасибо, думаю, именно system целесообразнее использовать при необходимости просто выполнить команду

пока не могу разобраться, как считать с консоли результат выполнения команды

банальный пример, команда ls, как получить список файлов в строку?

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #3 : 30 Декабрь 2009, 19:39:55 »
#include <stdio.h>
#include <stdlib.h>


main( )
{
        char *cmd = "ls";
        char buf[BUFSIZ];
        FILE *ptr;

        if ((ptr = popen(cmd, "r")) != NULL)
                while (fgets(buf, BUFSIZ, ptr) != NULL)
                        (void) printf("%s", buf);
                (void) pclose(ptr);
        return 0;
}

Оффлайн verplas

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #4 : 30 Декабрь 2009, 19:57:33 »
спасибо, разобрался :)

Оффлайн ArtfulVampire

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #5 : 08 Ноябрь 2010, 21:45:48 »
а если в самОй команде есть кавычки? то есть команда типа:
mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #6 : 08 Ноябрь 2010, 21:49:49 »
А в чём проблема? Не знаешь, как в C экранируются кавычки?
        char *cmd = "mencoder \"mf://*.jpg\" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4";

Оффлайн ArtfulVampire

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: c++, выполнение консольных команд
« Ответ #7 : 15 Ноябрь 2010, 19:27:11 »
Теперь знаю  :D

 

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