파일이 비 차단 모드로 열렸을 때 어떻게됩니까? (O_NONBLOCK 플래그가 설정 됨)
I/O 작업은 차단하지 않고 대신 차단되었음을 나타내는 오류 코드를 반환합니다.
데이터가 버퍼 인 경우 read()가 차단하거나 무엇을 반환합니까?
버퍼에 데이터가있는 경우 read
이 반환합니다.
그리고 버퍼에 읽을 데이터가 없으면 어떻게됩니까?
소켓이 차단되면 일부 데이터가 반환 될 때까지 차단됩니다. 소켓이 비 블로킹 인 경우, 소켓이 블로킹 된 상태에서 블로킹했음을 나타내는 에러 코드를 반환합니다.
그런데 중요한 것은 select
과 poll
입니다. 블로킹 소켓에는 거의 사용하지 않아야합니다. select
또는 poll
에서 읽기 또는 쓰기 적중 횟수를 얻으면 함수를 호출하고 반환되었을 때 차단되지 않은 상태에서 중간에 수행되는 가설적인 정식 작업을 의미합니다. 이는 상태보고 기능이며 향후 보증을 제공하지 않습니다. 차단해서는 안되는 프로그램을 작성하는 경우 모든 소켓을 비 차단으로 설정해야합니다.