π λ€νΈμν¬νλ‘κ·Έλλ° 12μ₯ μ 리
λ©ν°νλ μ± κΈ°λ°μ μλ²
λ©ν° νλ‘μΈμ€ μλ²μ λ¨μ
- νλ‘μΈμ€μ λΉλ²ν μμ± -> μ±λ₯ μ ν
- λ©ν° νλ‘μΈμ€μ νλ¦μ κ³ λ €νμ¬ κ΅¬νν΄μΌνκΈ°μ ꡬνμ΄ μ΄λ €μ
- νλ‘μΈμ€κ° ν΅μ μ΄ νμν μν©μμλ μλ²μ ꡬνμ΄ λ 볡μ‘
λ©ν° νλ‘μΈμ€ μλ²μ λμ
νλμ νλ‘μΈμ€μμ λ€μμ ν΄λΌμ΄μΈνΈμκ² μλΉμ€ν μ μμ΄μΌν¨
νλμ νλ‘μΈμ€κ° μ¬λ¬ κ°μ μμΌμ νΈλ€λ§
νλμ 리μμ€λ₯Ό λ μ΄μμ μμμμ 곡μ
IO λ©ν°νλ μ±

λ©ν° νλ‘μΈμ€

IO λ©ν°νλ μ±
select ν¨μμ μ΄ν΄μ μλ² κ΅¬ν
select ν¨μμ μλ νλ¦
- κ΄μ¬ λμ λͺ©λ‘ λ§λ€κΈ°, κ΄μ¬ μμΌ λ±λ‘ (fd_set μ΄κΈ°ν)
- νμΌ λμ€ν¬λ¦½ν°μ μ€μ
- λμ€ν¬λ¦½ν° 1 = κ΄μ°° λμμΌλ‘ μΆκ°
- λμ€ν¬λ¦½ν° 0 = κ΄μ°° λμμμ μ μΈ
- κ²μ¬μ λ²μ μ€μ
- νμ μμμ μ€μ
- νμΌ λμ€ν¬λ¦½ν°μ μ€μ
int select(
int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout
)
// maxfd : κ΄μ°° λμμ΄ λλ λμ€ν¬λ¦½ν°μ μ
// timeoutμ μ§μ μ ν΅ν΄ 무쑰건 λ°νμ΄ λλ μκ° κ²°μ κ°λ₯
- select ν¨μμ νΈμΆ
- λ³νκ° λ°μν μμΌμ λμ€ν¬λ¦½ν° 1 , λλ¨Έμ§λ 0
- λ³ν λ°μν μμΌλ§ read, write
νΉμ§
- νμ μμ μ€μ κ°λ₯
- 리μ€λ μμΌ λν κ΄μ°°μ λμ (μ°κ²° μμ² λν λ°μ΄ν°μ μμ μΌλ‘ ꡬλΆ)
- νμμμμ μν λ°νμ΄λΌλ©΄ λ€μ select() νΈμΆ -> breakλ¬Έ μ€ν
- μ΄λ²€νΈ λ°μ μ μ΄λ²€νΈλ₯Ό μ°ΎκΈ°μν΄ λ°λ³΅λ¬Έ κ΅¬μ± -> selectμ λ¨μ