Я изучаю медленный системный вызов и сигналы.
Для обычной системы медленный системный вызов (чтение с терминального устройства) может блокироваться навсегда.
и ниже пример, возможно чтение до истечения времени ожидания через некоторое время времени.
Но когда я его выполнил, тайм-аут ничего не делает.
Я не могу понять, почему.
Не могли бы вы объяснить и показать мне еще один пример медленного системного вызова?
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
static void sig_alrm(int signo){
}
int main(){
int n;
char line[50];
if(signal(SIGALRM, sig_alrm) == SIG_ERR)
printf("signal(SIGALRM) error");
alarm(1);
if((n = read(STDIN_FILENO, line, 50)) < 0)
printf("read error");
alarm(0);
write(STDOUT_FILENO, line, n);
exit(0);
}