2017-12-31 259 views
0

상황이다 : POSIX 환경에서, 내가 O_NONBLOCK 플래그가 설정 open(...)를 통해 장치를 개방하는 시리얼 포트 라이브러리를 사용합니다. open 호출 상태에 대한 매뉴얼 페이지 인 open은이 플래그로 차단하지 않습니다.확인 준비

문제점 : 포트를 연 직후 직렬 포트의 입력 버퍼를 플러시해야합니다. 그럼에도 불구하고 플러시 작업을 수행 할 때 직렬 포트가 준비되지 않았을 수 있습니다 (파일 열기가 아직 완료되지 않았습니다).

질문 : 비 차단 파일 디스크립터를 POSIX에서 준비하기 전에 차단할 수있는 방법이 있습니까?

감사합니다.

+0

당신이 당신이 * "직렬 포트가 준비되지 않을 수도 있습니다"이해 있습니까 * 의미, 즉 귀하의 상황에 실제로 적용됩니까? 어쩌면 간단한 해결책은 O_NONBLOCK 플래그로 ** open() ** 뒤에'fcntl (fd, F_SETFL, 0)'을 실행하여 블로킹 I/O를 사용하는 것입니다. * "파일 열기가 아직 완료되지 않았습니다"* - 그건 무의미한 말입니다. syscall이 리턴 할 때 포트가 열려 있습니다. 이것은 가설 적 문제인가 실제적인 문제인가? 이 문제를 나타내는 코드는 어디에 있습니까? "문제"*? – sawdust

답변

0

다음과 같은 시스템 중 하나를 사용할 수 있습니다 준비 얻는다 열려로받은 파일 기술자를 기다리는 호출 설문 조사 는 epoll을 선택