The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"запуск программы из си с возвратом значения"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"запуск программы из си с возвратом значения"  +/
Сообщение от the_skif (ok) on 12-Окт-09, 17:25 
здравствуйте
подскажите как из чистого си вызвать nix программу с атрибутами, и главное получить то, что программа пишет в консоль запихать в переменную (однострочный результат, хотелось бы запихнуть в char*).

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "запуск программы из си с возвратом значения"  +/
Сообщение от the_skif (ok) on 12-Окт-09, 17:28 
и/или как провернуть такое с python скриптом (хотелось бы знать оба варианта. 1й предпочтительнее)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "запуск программы из си с возвратом значения"  +/
Сообщение от L0n3R4ng3r (ok) on 12-Окт-09, 17:40 
>и/или как провернуть такое с python скриптом (хотелось бы знать оба варианта.
>1й предпочтительнее)

ф-ция system().

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "запуск программы из си с возвратом значения"  +/
Сообщение от the_skif (ok) on 12-Окт-09, 20:24 
>>и/или как провернуть такое с python скриптом (хотелось бы знать оба варианта.
>>1й предпочтительнее)
>
>ф-ция system().

Функция system передает заданную строку string к интерпре-
татору команд и обрабатывает эту строку как команду MS DOS. Функ-
ция system ссылается на переменные окружения COMSPEC и PATH, что-
бы расположить файл COMMAND.COM, который используется при выпол-
нении команды string.

Если string успешно отработала, функция system возвращает
значение 0. Возвращаемое значение -1 свидетельствует об ошибке и
errno устанавливается в одно из следующих значений...

это не то, что мне нужно

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "запуск программы из си с возвратом значения"  +/
Сообщение от аноним on 12-Окт-09, 20:44 
>Функция system передает заданную строку string к интерпре-
>татору команд и обрабатывает эту строку как команду MS DOS. Функ-
>ция system ссылается на переменные окружения COMSPEC и PATH, что-
>бы расположить файл COMMAND.COM, который используется при выпол-
>нении команды string.

Какой нахрен command.com?

>это не то, что мне нужно

Ничто не будет возвращать char*, потому что это был бы идиотизм. На нижнем уровне это делается через pipe+fork (переправляем stdout/stderr в pipe в ребенке, в родителе читаем сколько надо) + wait. popen это все фактически обертывает в одну функцию.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "запуск программы из си с возвратом значения"  +/
Сообщение от аноним on 12-Окт-09, 20:04 
>подскажите как из чистого си вызвать nix программу с атрибутами, и главное
>получить то, что программа пишет в консоль запихать в переменную (однострочный
>результат, хотелось бы запихнуть в char*).

popen

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "запуск программы из си с возвратом значения"  +/
Сообщение от the_skif (ok) on 13-Окт-09, 14:12 

>popen

спасибо

сделал так

  OutStream = popen(cmd, "r");
  BashCmdResult = fgets(buffer,40,OutStream);

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "стандартная задача"  +/
Сообщение от Вова on 12-Окт-09, 21:37 
>здравствуйте
>подскажите как из чистого си вызвать nix программу с атрибутами, и главное
>получить то, что программа пишет в консоль запихать в переменную (однострочный
>результат, хотелось бы запихнуть в char*).

простейший вариант, если не нужен вывод в stderr, это использование popen(), всё очень просто и красиво; о если же нужен и stderr, то  задача усложняется в разы: pipe() + fork() + dup(); если требуется ещё и контролировать коды возврата, придётся использовать и waitpid() пару раз (с NOHANG для чтения stdout/stderr из пайпов и без оного - для получения корректного кода возврата). И наличие данных в пайпах конечно нужно поллировать, чем душе угодно

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру