나는 비 블로킹 (non-blocking) 일 수있는 읽기 용으로 열린 파일 디스크립터를 가지고있다. 필자가해야 할 일은 EOF에 도달 할 때까지 모든 데이터를 읽고 쓰기 가능한 파일 설명자에 해당 데이터를 쓰는 것입니다. 이 복사를 수행하는 프로세스가 주변에서 진행되는 작업을 "인식"하지 못하기 때문에 데이터를 기다리는 동안 유용한 작업을 수행 할 수 있다고 생각하지 않으며 루프를 사용하지 않으려 고합니다 (while (while while while
errno
은 EAGAIN
이 아닙니다. 낭비 일 것이라고 생각하기 때문입니다. 데이터를 사용할 수있을 때까지 복사 프로세스의 실행을 차단하거나 정지시키는 방법이 있습니까? 리눅스 SCSI 일반 (SG) HOWTO의EAGAIN 이후 강제 차단 읽기?
0
A
답변
3
귀하의 다른 대답은 간단 차단 파일을 다시 설정 O_NONBLOCK
을 설정하지 않아. 그것은 당신의 상황에서 효과가 있다면 완벽하게 괜찮습니다. 그렇지 않은 경우 select()
을 사용하여 비 차단 파일 설명자가 읽을 수있을 때까지 차단할 수 있습니다.
2
7 장에서는이 작업을 수행하는 방법의 an example 제공 :
는int flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, flags & (~O_NONBLOCK));
관련 문제
- 1. 블로킹 소켓 반환 EAGAIN
- 2. 비 차단 파일 읽기
- 3. EAGAIN on recv()
- 4. PHP는 읽기 파일 - 강제 다운로드
- 5. 비동기식 NSURLConnection 이후 코어 데이터 차단 UI didLoadResource on iPhone
- 6. 익명 파이프에 대한 읽기 및 쓰기 차단
- 7. ifstream 객체를 통해 FIFO에서 읽기 차단
- 8. 위젯 강제 차단 (즉, "대화 형 장치"위조)
- 9. 모바일 Firefox의 차단 차단
- 10. 리눅스에서 차단 읽기를 중단합니다.
- 11. 강제
- 12. 자바 비 차단 클라이언트
- 13. 왜 networkstream.write가 차단 되었습니까?
- 14. 차단 및 비 차단 읽기의 차이점은 무엇입니까?
- 15. SimpleHTTPServer, 차단 및 차단 된 요청 처리기
- 16. 자동 차단 기능을 사용하는 사용자 차단
- 17. PHP 스트림의 차단 및 비 차단 모드
- 18. 배치 포킹으로 인해 Ruby의`Process.fork`와`Errno :: EAGAIN`이 발생했습니다
- 19. 'Finally'반복자에서 차단
- 20. 신호 차단
- 21. 차단 요청
- 22. MSG_PEEK가있는 비 차단 recv가 성공하면 MSG_PEEK이없는 후속 recv도 성공하게됩니까?
- 23. 빠른 정렬 난이 이후
- 24. Gridview_Sorting 이후 편집이 엉망입니다.
- 25. presentModalViewController 이후 pushViewController 사용
- 26. MVVM - - prismv2이 이후
- 27. PHP는 imap_search 이후 문제
- 28. 버전 이후 5.0에서
- 29. ajaxSubmit() 이후 처리 방법
- 30. AsyncTask 이후 번들의 NullPointerExecption