powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / popen
5 сообщений из 5, страница 1 из 1
popen
    #34003931
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#!/bin/sh
IPTABLES=/sbin/iptables
path=/usr/bin/sudo

if [ $ 1  == "-D" ]; then
    while [  1  ]
    do
    $path $IPTABLES действие  2 >/dev/null || exit;
    echo $?
    done
fi

if [ $ 1  == "-A" ]; then
    $path $IPTABLES действие  2 >/dev/null
    echo $?
fi
Он запускается в Си программе

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
sprintf(command,"/scr -A %s",ip);
fp1 = popen(command, "r");

if (fp1 != NULL) {
              while (fgets(line, sizeof line, fp1)) {
                  if (strcmp(line,"0\n")!= 0 ) {
                     return - 1 ;
                  }
              }
} else {
    return - 1 ;
}

Как правильно сделать проверку и выход, если команда завершена неуспешно?
Конкретно,что ставить вместо 0\n?
...
Рейтинг: 0 / 0
popen
    #34003961
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы забыли применить pclose().
Он и вернет статус, котрый можно будет проанализировать.
...
Рейтинг: 0 / 0
popen
    #34004381
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом случае возвращается результат выполнения команды popen, но как проверить выполнились ли команды iptables или хотя бы сам скрипт?
...
Рейтинг: 0 / 0
popen
    #34004388
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может правильнее будет использовать fgetc?
...
Рейтинг: 0 / 0
popen
    #34004408
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
posttВ этом случае возвращается результат выполнения команды popen, но как проверить выполнились ли команды iptables или хотя бы сам скрипт?

manThe pclose function waits for the associated process to terminate and
returns the exit status of the command as returned by wait4.

т.е. получим статус завершения того что запускалось через popen.
Соответсвенно, надо в запускаемом скрипте анализировать результаты выполнения iptables и передавать наружу статус когда делаем exit в скрипте. Imho.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / popen
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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