Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / popen / 5 сообщений из 5, страница 1 из 1
21.09.2006, 16:42
    #34003931
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
popen
Есть скрипт
Код: 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
21.09.2006, 16:52
    #34003961
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
popen
Вы забыли применить pclose().
Он и вернет статус, котрый можно будет проанализировать.
...
Рейтинг: 0 / 0
21.09.2006, 19:15
    #34004381
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
popen
В этом случае возвращается результат выполнения команды popen, но как проверить выполнились ли команды iptables или хотя бы сам скрипт?
...
Рейтинг: 0 / 0
21.09.2006, 19:16
    #34004388
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
popen
Может правильнее будет использовать fgetc?
...
Рейтинг: 0 / 0
21.09.2006, 19:26
    #34004408
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
popen
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
Форумы / C++ [игнор отключен] [закрыт для гостей] / popen / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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