Я пытаюсь создать не отвечающий обработчик программы, чтобы он сигнализировал, что ответ на вызов занимает более 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);
}