Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск shell cкрипта из программы на Си / 8 сообщений из 8, страница 1 из 1
14.09.2006, 11:23
    #33986372
httt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
Как запустить shell-cкрипт из программы на Си или linux-команду? Можете привести пример.
...
Рейтинг: 0 / 0
14.09.2006, 11:34
    #33986428
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
htttКак запустить shell-cкрипт из программы на Си или linux-команду? Можете привести пример.

Семейство функций exec (на 3-й странице мана).

Запускаемая программа заменит собой вашу, поэтому, если необходимо продолжать вашу программу выполните ее разделение функцией fork

Код: plaintext
1.
2.
3.
4.
5.
if (!fork()) {
//дочерний процесс
execlp("~/my_script", NULL);
}
//основной процесс
...
Рейтинг: 0 / 0
14.09.2006, 12:17
    #33986583
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
Ну самое простое сказать system и ждать завершения.
Нк а едели ждать не хочется то
то fork + exec*, я предпочитаю execv? и для познания результата отловить SIGCHLD и спросить wait_pid
...
Рейтинг: 0 / 0
14.09.2006, 12:29
    #33986626
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
Систем не рекомендуют

1. игнорирует SIGINT и SIGQUIT
2. Какие-то переменные окружения могут вызвать сбои в системе, если в программах есть какие-то там привелегии. :)
...
Рейтинг: 0 / 0
15.09.2006, 08:56
    #33989085
httt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
Как можно прочитать вывод shell-команды в Си-программе?
Например вывод команды iptables -L для последующего отображения и обработки.
Код: plaintext
1.
2.
3.
4.
if (!fork()) {
//дочерний процесс
execlp("iptables -L", NULL);
}
//основной процесс
...
Рейтинг: 0 / 0
15.09.2006, 09:43
    #33989200
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
Можно попробовать перенаправить стандартный выход опциями. Не факт, что получится.
Если получится, то перенаправить можно в файл или какой - нибудь программе, которая запуситится и передаст, например, по fifo данные основной прогрмаммы.
...
Рейтинг: 0 / 0
15.09.2006, 09:54
    #33989227
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
httt, тут несколько решений.

Самаое простое и стандартное - запускать процесс функцией popen.

А можно вручную - исспользовать pipe совместно с fork/exec и читать stdout порожденного процесса. Что собственно и реализовано в различных shell-ах
...
Рейтинг: 0 / 0
15.09.2006, 11:35
    #33989580
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск shell cкрипта из программы на Си
Чтобы было куда подсматривать (см на скрепке)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск shell cкрипта из программы на Си / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]