Вызвать скрипт из программы на Си (не дожидаясь конца его выполнения)

Модератор: Модераторы разделов

Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Вызвать скрипт из программы на Си

Сообщение GRS »

system() - ждем пока вызванная программа/скрипт завершится - а если мне не нужно ждать, как сделать так, чтобы программа продолжила работу - а другой процесс отдельно от него ?
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Вызвать скрипт из программы на Си

Сообщение uptime »

а если в конец команды амперсанд (&) добавить?
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Вызвать скрипт из программы на Си

Сообщение nesk »

использовать fork и функцию из семейства exec
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Вызвать скрипт из программы на Си

Сообщение uptime »

nesk писал(а):
10.09.2008 11:51
использовать fork и функцию из семейства exec


да. Это если вам нужно контролировать время завершения и возвращаемое значение.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Вызвать скрипт из программы на Си

Сообщение nesk »

uptime писал(а):
10.09.2008 12:00
nesk писал(а):
10.09.2008 11:51
использовать fork и функцию из семейства exec


да. Это если вам нужно контролировать время завершения и возвращаемое значение.

если не нужно, надо просто поставить игнор на сигнал SIGCHLD
Тогда дочерний процесс при завершении не будет становиться зомби.
А вообще system делает fork, потом exec в сыне и wait в отце. Именно wait заставляет ждать завершения дочернего процесса.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Re: Вызвать скрипт из программы на Си

Сообщение GRS »

uptime писал(а):
10.09.2008 11:47
а если в конец команды амперсанд (&) добавить?

Да вот что бывает когда не высыпаешся - почему сам до этого не додумался.
Спасибо, вопрос решен.
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: Вызвать скрипт из программы на Си

Сообщение halturin »

мне так кажется, что не решен... ибо есть шанс наплодить зомби.
Спасибо сказали:
Аватара пользователя
minoru-kun
Сообщения: 621
ОС: Debian GNU/Linux

Re: Вызвать скрипт из программы на Си

Сообщение minoru-kun »

uptime писал(а):
10.09.2008 11:47
а если в конец команды амперсанд (&) добавить?

Спагетти.
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Вызвать скрипт из программы на Си

Сообщение uptime »

minoru-kun писал(а):
11.09.2008 18:25
uptime писал(а):
10.09.2008 11:47
а если в конец команды амперсанд (&) добавить?

Спагетти.



Можно с этого месьа поподробнее? (:
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Re: Вызвать скрипт из программы на Си

Сообщение GRS »

halturin писал(а):
11.09.2008 18:04
мне так кажется, что не решен... ибо есть шанс наплодить зомби.

у меня приложение тестер - просто мне было влом писать код (нужно было подключать новый сетевой интерфейс, кодеры/декодеры), который бы отправлял запрос, потому как уже давно есть перловый скрипт на 15 строчек, который все нужное делает.
Дело просто в том, что я создал прогу тестер, которая шлет запрос и в то время пока сервер этот запрос обрабатывает он (сервер) шлет другие запросы, которые тестер должен обработать. Полсе того как тестер обработает запросы он шлет их серверу и только после этого сервер присылает ответ на тот первый запрос, после чего так еще куча нестаднртных и нелогичных действий, присущих тестерам :)
Так что - даже если мертвяки плодятся не страшно (хотя скрипт завершается нормально, не висит), т.к. это всего лишь тестер для основной программы.
Спасибо сказали: