C언어 header/stdio.h
fileno(3) - stream에 할당된 file descriptor얻기
자연&사람
2019. 9. 24. 23:06
반응형
fileno(3)
#include <stdio.h>
int fileno(FILE *stream);
FILE *에는 실제로 system call I/O를 위한 file descriptor가 할당되어 있습니다. 이 fd값을 얻는 함수입니다. 그러나 system call I/O 함수랑 Stream함수를 혼용하여 사용하면 예기치 못한 오류가 발생할 수 있습니다. 부득이하게 fd를 사용해야 한다면, 쓰기용 stream의 경우 fflush(3)를 먼저하고 fd로 작업을 하는 것이 좋습니다. stream을 통해서 할 수 없는 기능에 대해서만 fd를 얻어서 처리하도록 해야 합니다.
파라미터
stream
- fd를 얻을 stream 변수
RETURN
0
- 정상적으로 fd값을 반환하으며, 반환된 값이 fd입니다.
-1
- 오류가 발생하였으며, 상세한 오류 내용은 errno에 저장됩니다.
EBADF : 주어진 stream이 유효하지 않습니다.
활용 예제
#include <stdio.h>
#include <string.h>
#include <errno.h>
......
FILE *fp;
int fd;
......
if((fd = fileno(fp)) == -1) {
fprintf(stderr, "Error: %s\n", strerror(errno));
return -1;
}
......
see also :
반응형