|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Linux Select
, G0 b. E5 E; w" @$ d2 f- v
0 _" c( A/ A6 m! T* r7 `, n5 V" t& i7 G; ?- B6 {
在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核:
$ w* }- Z7 ~: x+ Q
2 m1 S7 k4 X. @, ~3 @9 h {4 Y1 k% ^
•我们所关心的文件描述符
" L' Z# q4 M6 J( q9 F •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常)
, P! a* C# h9 O) h& u F# Q7 T" N' z •我们要等待多长时间。(我们可以等待无限长的时间,等待固定的一段时间,或者根本就不等待)" ~1 W9 I7 o: a
从 select函数返回后,内核告诉我们一下信息:& A' t! l5 v$ m- ~: H9 c" x3 H9 @
•对我们的要求已经做好准备的描述符的个数6 i( G0 r$ D2 o' [% ~5 V
•对于三种条件哪些描述符已经做好准备.(读,写,异常)3 a d) l6 n; L% }1 h
+ e9 [2 A- l) V+ w | E
. @. L! t! f. n8 L8 F3 h2 a7 ^
select4 d" S$ ^" a, K H6 O4 n' I/ T
, w1 e6 G& u( k# K5 p( T
9 R6 N6 e! ~ ]+ ~2 P5 s6 q8 ^/ i- r6 K" c6 \# z$ `5 T: i# H V
3 E( R: ?& p8 i$ g, z$ u% o
, [# N; y& N! m7 q! l" c / i# D' z) d: y- n- ~7 B5 v
+ e) b1 W. v# q6 f/ `# V* R
+ P' } N4 [1 W4 u
) H2 x+ y% W+ Z! r
C) c) G+ W7 @0 @& J% u: B3 w+ ?9 s2 }/ N9 I
) o- T, [! X$ o7 E% U8 c0 Z( [. |6 a/ l% v9 i" b
|
|