The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Вопрос по pclose"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Вопрос по pclose"  +/
Сообщение от Kvest (ok) on 30-Авг-12, 14:55 
Доброго всем времени суток!
Имеется такой кусок кода:
FILE *pf = popen(command,"r");
if (fp != NULL)
{
  result = pclose(fp);
}
return result;

Фактически это обращение к утилите с просьбой выполнения различный вещей. Утилита требует админ пароль, он добавляется в command. Проблема в том, что если пароль неверный, то поток выполнения навсегда повисает в pclose(fp)(утилита там постоянно перезапрашивает пароль, говоря что ввели неверный). Как мне навесить на pclose таймаут или еще каким то образом определить что утилита не отработала и отпустить поток дальше?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Вопрос по pclose"  +/
Сообщение от me (??) on 30-Авг-12, 18:51 
Как мне навесить на pclose
> таймаут или еще каким то образом определить что утилита не отработала
> и отпустить поток дальше?

alarm()

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Вопрос по pclose"  +/
Сообщение от pavlinux (ok) on 31-Авг-12, 01:33 
> поток выполнения навсегда повисает в pclose(fp)


...
pid = fork()
    if (pid == 0) {
         alarm(60);
         pf = popen(command,"r");
         if (pf == NULL)
               return -1;  
    }

    if (pid > 0) {
         waitpid (pid, &status, 0);

         if (WTERMSIG(status) == SIGALRM)
            /* timeout handler */
         else
             ...

         if (pf != NULL)
             result = pclose(fp);

          return result;
    }

    if (pid < 0 )
           return -1;  
...


как-то так.

    

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Вопрос по pclose"  +/
Сообщение от Kvest (ok) on 03-Сен-12, 17:49 
Спасибо,pavlinux, помог!
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру