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