반응형

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 :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

 

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,