반응형
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 :
반응형
'C언어 header > stdio.h' 카테고리의 다른 글
pclose(3) - 생성된 pipe stream을 close함. (0) | 2019.09.24 |
---|---|
popen(3) - 프로세스로부터 pipe stream open (0) | 2019.09.24 |
clearerr(3) - 오류 및 eof 상태 초기화 (0) | 2019.09.24 |
feof(3) - 파일의 끝에 도달여부 확인 (0) | 2019.09.24 |
ferror(3) - stream 오류 확인 (0) | 2019.09.24 |
댓글을 달아 주세요