Сигнализация вызывающего абонента, если он занимает более 1 секунды - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь создать не отвечающий обработчик программы, чтобы он сигнализировал, что ответ на вызов занимает более 1 секунды. Абстракция отправит SIGUSR1 вызывающей стороне и будет продолжать ждать. Ниже приведены фрагменты кода, но я не знаю, как заставить процесс ждать 1 секунду после того, как вызов не отвечает в течение 1 секунды. Это один процесс с 1 потоком. Используя POSIX, доступны любые методы.

void USR1_handler(){
    printf("Call delayed...waiting...");
}

int foo()
{
    msg[0] = code_foo;
    write(sd, msg, 1);
    while (no_message_on_descriptor(sd))
        kill(getpid(), SIGUSR1);
    read(sd, msg, sizeof(msg));
    ...
}

int no_message_on_descriptor(int d)
{
    /*need help here */


    signal(SIGUSR1, USR1_handler);
    return(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...