首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

请问一个linux read阻塞的有关问题

2013-09-06 
请教一个linuxread阻塞的问题1.当没有数据的时候,read是会阻塞的(我设置了nonblock也试了一遍,还是阻塞在

请教一个linux read阻塞的问题
1.当没有数据的时候,read是会阻塞的(我设置了nonblock也试了一遍,还是阻塞在那,返回不了)?
2.如何设置一个timeout,在规定的时间内如果读取不到数据的话就会返回

不吝赐教,谢谢
[解决办法]
1. 楼主代码怎么写的?
我是这样写的,标准输入变成非阻塞OK。
        flag = fcntl(0, F_GETFL, 0);
        flag 
[解决办法]
= O_NONBLOCK;
        if (fcntl(0, F_SETFL, flag) < 0) {      /* fgets no-block now */
                perror("Set stdin to non-block fails.");
                exit(1);
        }
2. 用select监视你read的fd。
[解决办法]

引用:
Quote: 引用:

1. 楼主代码怎么写的?
我是这样写的,标准输入变成非阻塞OK。
        flag = fcntl(0, F_GETFL, 0);
        flag 
[解决办法]
= O_NONBLOCK;
        if (fcntl(0, F_SETFL, flag) < 0) {      /* fgets no-block now */
                perror("Set stdin to non-block fails.");
                exit(1);
        }
2. 用select监视你read的fd。


请教下, 我老是是2种一起用,还不能完全搞清楚2个函数在监听阻塞函数的时候到底有什么实质性不同?
求大神赐教

select监听判断这个文件现在是否可读写,这样再操作就不会出现阻塞了,也不用考虑会出现阻塞的情况,立即返回。

热点排行
Bad Request.