Доброго всем времени суток!
Имеется такой кусок кода:
FILE *pf = popen(command,"r");
if (fp != NULL)
{
result = pclose(fp);
}
return result;Фактически это обращение к утилите с просьбой выполнения различный вещей. Утилита требует админ пароль, он добавляется в command. Проблема в том, что если пароль неверный, то поток выполнения навсегда повисает в pclose(fp)(утилита там постоянно перезапрашивает пароль, говоря что ввели неверный). Как мне навесить на pclose таймаут или еще каким то образом определить что утилита не отработала и отпустить поток дальше?
Как мне навесить на pclose
> таймаут или еще каким то образом определить что утилита не отработала
> и отпустить поток дальше?alarm()
> поток выполнения навсегда повисает в 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;
...
как-то так.
Спасибо,pavlinux, помог!