손실됩니다.열린 파일 O_NONBLOCKING은 커널 모듈
하지만 내 문제는 O_NONBLOCK
가 somewere 분실 있다는 것입니다 :
ssize_t my_read(struct file *filp, char __user *user_buffer, size_t bytes_requested, loff_t *capture_ptr) {
if (filp->f_flags & O_NONBLOCK){
LOGI("mode: O_NONBLOCK");
}
else{
LOGI("mode: BLOCKING"); // <-- this is printed
}
..
}
가 나는 또한 그것은 로깅 문제가 아니에요, 드라이버는 차단 모드에서와 같이 동작
pcm->dfd=open(fname, O_RDONLY|O_NONBLOCK);
// O_NONBLOCK does not work :/
int flags = fcntl(pcm->dfd, F_GETFL, 0);
fcntl(pcm->dfd, F_SETFL, flags | O_NONBLOCK);
을 시도했다.
누구나 아이디어가 있으십니까?
편집 :
열린 파일에서 읽는 코드는 절대적으로 간단하다 : 아니, 그 밖에 fcntl()
somewere이 있다면 나는 또한 프로그램을 확인
size=read(pcm->dfd,inBuffer,inBufferBytes);
하지만 ..
편집 2 :
O_NONBLOCK
이 내 사용자 프로그램 (Android NDK)의 커널에있는 값과 다른 값을 가질 수 있습니까? 커널 헤더에서 O_NONBLOCK
을 검색했는데 이미 두 가지 다른 정의가 있습니다.
open
-implementation을 확인하고 이미
하지
O_NONBLOCK
이
filp->f_flags
입니다.
'읽기'를 수행하는 코드를 보여주십시오. – cnicutar
'read' 행을 추가했습니다. –
'O_NONBLOCK' 파일을 열면 [specs] (http://pubs.opengroup.org/onlinepubs/000095399/functions/open.html)에 따라 UB (a.k.a. _unspecified behaviour_)가됩니다. –