글 수 232
2009.08.24 16:25:06 (*.51.52.98)
126743
설명
디스크립터에서 파일 스트림 포인터를 구합니다. 즉, open()함수로 구한 디스크립터의 값에서 fopen()으로 구하는 FILE * 포인터 값을 구합니다.
헤더 | stdio.h | |||||||||||||||||||
형태 | FILE *fdopen(int fildes, const char *mode); | |||||||||||||||||||
인수 |
|
|||||||||||||||||||
반환 |
|
예제
#include <stdio.h> #include <fcntl.h> #include <unistd.h> int file_size( int fd) // 파일 디스크립터로 파일 크기를 구합니다. { FILE *fp; int sz_file; fp = fdopen( fd, "r"); fseek( fp, 0L, SEEK_END); sz_file = ftell( fp); lseek( fd, 0, SEEK_SET); // 반드시 lseek()로 읽기 포인터를 처음으로 fclose( fp); return( sz_file); } int main( void) { char buff[1024]; int fd; fd = open( "main.c", O_RDONLY, 0644); printf( "file size=%d\n", file_size( dup( fd))); while( 0 < read( fd, buff, 1024)) // 파일 내용을 출력 printf( "%s\n", buff); close( fd); }
]$ ./app file size=673 #include#include #include int file_size( int fd) // 파일 디스크립터로 파일 크기를 구합니다. { FILE *fp; int sz_file; fp = fdopen( fd, "r"); fseek( fp, 0L, SEEK_END); sz_file = ftell( fp); lseek( fd, 0, SEEK_SET); // 반드시 lseek()로 읽기 포인터를 처음으로 fclose( fp); return( sz_file); } int main( void) { char buff[1024]; int fd; fd = open( "main.c", O_RDONLY, 0644); printf( "file size=%d\n", file_size( dup( fd))); while( 0 < read( fd, buff, 1024)) // 파일 내용을 출력 printf( "%s\n", buff); close( fd); }9? ]$