Всем привет!
Создал демона по статье -
www.lissyara.su/articles/freebsd/coding/socket_server
По консоли данный пример работает очень хорошо. Но как только я решил изменить в нем функции, то начало работать все только один раз. Теперь подробнее.
Мне нужно вызывать bash скрипт (точнее /etc/init.d/service stop) при вводе команды по консоли. Я подставил в пример в условие if(cmd == "info") функцию system("/etc/init.d/service stop"). Первый вызов все работает отлично, а остальные не запускаются. Точнее если выставить перед функцией system вывод текста то он работает, а сама функция system со второго раза уже нет. Чем можно заменить данную функцию или что я делаю не так?
Дополняю:
второе выполнение system возвращает пустую строку
char *cmd = "/etc/init.d/service stop";
char buf[BUFSIZ];
FILE *ptr;
if ((ptr = popen(cmd, "r")) != NULL)
while (fgets(buf, BUFSIZ, ptr) != NULL)
(void) printf("%s", buf);
(void) pclose(ptr);
А второе выполнение данного кода вообще зависает.