LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1365|回复: 2

请教一个关于EINTR的问题。

[复制链接]
发表于 2003-8-7 11:25:13 | 显示全部楼层 |阅读模式
程序中有这么一段:
read_file:
        tv.tv_sec=30;
        tv.tv_usec=0;
        FD_ZERO(&readfds);
        FD_SET(STDIN_FILENO,&readfds);
        ret=select(STDIN_FILENO+1,&readfds,NULL,NULL,&tv);
        if(ret<=0){
                if(errno==EINTR)
                     goto read_file;

我想问的是,,什么时候会产生这个EINTR信号呢?程序的其他地方并没有产生该信号。
我以前碰到一个程序,跟这个结构差不多,,是一个while循环,总是报错说,产生了EINTR信号。所以

我一直不明白,,到底是什么产生了这个信号???请大家赐教。
发表于 2003-8-7 12:19:22 | 显示全部楼层
信号处理完后
慢调用函数(也就是调用时会阻塞在那的)会返回EINT
表示已有信号产生

具体可以看看它们的man
如man read
 楼主| 发表于 2003-8-7 14:11:15 | 显示全部楼层
man select

表示,当return value是-1时,会设置errno。当errno为EINTR时,表示有一个non blocked signal was caught..

那么,,究竟什么东西可以产生这个non blocked signal???
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表