【发布时间】:2011-09-07 18:02:43
【问题描述】:
我正在学习缓慢的系统调用和信号。
对于普通系统,慢速系统调用(从终端设备读取)可能会永远阻塞。
在下面的示例中,可能会在一段时间后读取超时。
但是当我执行它时,超时什么也没做。
我不明白为什么。
你能解释一下并给我看另一个慢速系统调用的例子吗?
#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);
}
【问题讨论】:
标签: signals system-calls