source

파일 포인터(FILE*fp)를 파일 기술자(int fd)로 변환하려면 어떻게 해야 합니까?

goodcode 2022. 8. 30. 22:11
반응형

파일 포인터(FILE*fp)를 파일 기술자(int fd)로 변환하려면 어떻게 해야 합니까?

나는 가지고 있다FILE *에 대한 콜에 의해 반환됩니다.fopen()파일 디스크립터를 가져와야 합니다.fsync(fd)파일 포인터에서 파일 설명자를 가져오는 기능은 무엇입니까?

적절한 기능은int fileno(FILE *stream)에 기재되어 있습니다.<stdio.h>는 POSIX 표준이지만 표준 C는 아닙니다.

라 할지라도fileno(FILE *)는 파일 기술자를 반환할 수 있으므로 stdio의 버퍼를 바이패스하지 않도록 매우 주의하십시오.버퍼 데이터(읽기 또는 플러시되지 않은 쓰기)가 있는 경우 파일 설명자에서 읽기/쓰기를 수행하면 예기치 않은 결과가 발생할 수 있습니다.

사이드 질문 중 하나에 응답하고 파일 설명자를 FILE 포인터로 변환하려면fdopen(3)

  fd = _fileno(fp);  // Probably the best way
       fd = fp->_file;     // direct from the FILE structure, member 

   
    typedef struct _iobuf  {
       char*   _ptr;
       int     _cnt;
       char*   _base;
       int     _flag;
       int     _file;
       int     _charbuf;
       int     _bufsiz;
       char*   _tmpfname; } FILE;

언급URL : https://stackoverflow.com/questions/3167298/how-can-i-convert-a-file-pointer-file-fp-to-a-file-descriptor-int-fd

반응형