Запуск функции тайм-аута в фоновом режиме - PullRequest
0 голосов
/ 12 октября 2018

У меня есть функция:

int waiting()
{
fd_set          input_set;
struct timeval  timeout;
int             ready_for_reading = 0;
int             read_bytes = 0;

FD_ZERO(&input_set );
FD_SET(0, &input_set);

timeout.tv_sec = WAIT;    // WAIT seconds
timeout.tv_usec = 0;    // 0 milliseconds

printf("^[[10;53H^[[1;34;44m   LOGIN TO BBS   ^[[0;37m", WAIT);
printf("^[[11;53H^[[34;46m   apply to bbs   ^[[0;37m", WAIT);
printf("^[[12;53H^[[34;46m    page sysop    ^[[0;37m", WAIT);
printf("^[[13;53H^[[34;46m   logout of bbs  ^[[0;37m", WAIT);
printf("\n", WAIT);

ready_for_reading = select(1, &input_set, NULL, NULL, &timeout);

if (ready_for_reading == -1) {
    return -1;
}
if (ready_for_reading) {

} else {
    exit(1);
}

return 0;
}

Время ожидания, как и должно быть, проблема в том, что он работает только тогда, когда пользователь ничего не вводит.Я хотел бы, чтобы это работало независимо от того, вводит ли пользователь что-нибудь.В частности, если пользователь использует стрелки для выбора одного из вариантов, но не нажимает клавишу ввода, чтобы фактически выбрать его.Весь смысл в том, что люди, которые звонят на мою BBS, если они с ней связываются, и находятся в меню, для них истекает время ожидания, если они ничего не делают.У меня проблема в том, что некоторые люди вызывают мою BBS и входят в систему, но на самом деле ничего не делают.И он не выходит так, как должен.Блокировка узла на BBS.Кроме того, я хотел бы запустить эту функцию в фоновом режиме.Это возможно?

1 Ответ

0 голосов
/ 12 октября 2018

Хорошо.Я нашел функцию, которая делает именно то, что я хочу.alarm().Я устанавливаю alarm(15), где я помещаю функцию waiting, а затем добавляю alarm(0) там, где я хочу, чтобы время не истекло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...