@pka06455

Как мне вызвать bash скрипт из C++ в демоне?

Всем привет!

Создал демона по статье - 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);

А второе выполнение данного кода вообще зависает.
  • Вопрос задан
  • 946 просмотров
Пригласить эксперта
Ответы на вопрос 1
Olej
@Olej
инженер, программист, преподаватель
Я подставил в пример в условие if(cmd == "info")

Предполагаю, что здесь написана полная херня:
- cmd, "info" - это указатели на строку, char* ...
- содержимое нельзя сравнивать, сравнивая указатели.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы