当前位置: 技术问答>linux和unix
【求助】文件open函数打开时的O_NONBLOCK 什么意思
来源: 互联网 发布时间:2017-01-22
本文导语: 【求助】文件open函数打开时的O_NONBLOCK 什么意思啊, 另外,fcntl 是否操作的必须是 fopen 打开的文件 ;ioctl 操作的是 open 函数打开的文件 ,能不能相互的操作,比如:fcntl 操作由 open 函数打开的文件 ; 也许...
【求助】文件open函数打开时的O_NONBLOCK 什么意思啊,
另外,fcntl 是否操作的必须是 fopen 打开的文件 ;ioctl 操作的是 open 函数打开的文件 ,能不能相互的操作,比如:fcntl 操作由 open 函数打开的文件 ;
也许很基本的 ,刚开始学 驱动程序 的编写,产生了一些疑问,感觉有点乱,
先谢谢了
O(∩_∩)O~
另外,fcntl 是否操作的必须是 fopen 打开的文件 ;ioctl 操作的是 open 函数打开的文件 ,能不能相互的操作,比如:fcntl 操作由 open 函数打开的文件 ;
也许很基本的 ,刚开始学 驱动程序 的编写,产生了一些疑问,感觉有点乱,
先谢谢了
O(∩_∩)O~
|
apue说到非堵塞要分析两种系统调用,低速的系统调用和其它的系统调用。那么低速的系统调用可能是进程堵塞。例如对不存在的数据进行读操作,可能是调用者永远阻塞,因为他得等读到了数据才返回;如果某个文件描述符拒绝某个写操作,写操作不能完成而阻塞;打开某些类型没有准备好的文件的文件也会引起阻塞;以及对强制性记录锁读或写;某些ioctl操作;某些进程间的通信。
非阻塞I/O使我们的操作要么成功,要么立即返回错误,不被阻塞。
对于一个给定的描述符两种方法对其指定非阻塞I/O:
(1)调用open获得描述符,并指定O_NONBLOCK标志
(2)对已经打开的文件描述符,调用fcntl,打开O_NONBLOCK文件状态标志。
int flags,s为描述符
非阻塞I/O使我们的操作要么成功,要么立即返回错误,不被阻塞。
对于一个给定的描述符两种方法对其指定非阻塞I/O:
(1)调用open获得描述符,并指定O_NONBLOCK标志
(2)对已经打开的文件描述符,调用fcntl,打开O_NONBLOCK文件状态标志。
int flags,s为描述符
flags = fcntl( s, F_GETFL, 0 ) )
fcntl( s, F_SETFL, flags | O_NONBLOCK )
|
在内核中是,检测其标志!如果存在O_NONBLOCK,读写操作将会立即返回,否则内核通过调度其它进程阻塞当前进程!当目的事件发生时内核会唤醒它!
|
fcntl可用open函数打开的文件句柄。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。