读书人

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

发布时间: 2013-09-06 10:17:17 作者: rapoo

请教一个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监听判断这个文件现在是否可读写,这样再操作就不会出现阻塞了,也不用考虑会出现阻塞的情况,立即返回。

读书人网 >UNIXLINUX

热点推荐