반응형
파일기술자와 파일포인터간 변환
저수준 파일 입출력의 파일기술자와 고수준 파일 입출력의 파일포인터는 상호 변환 가능
- 파일 포인터 생성 : fdopen(3) (파일 디스크립터 오픈의 약자)
- 파일 기술자와 모드값을 받아 파일 포인터를 생성
- 파일 기술자 생성: fileno(3)
- 파일 포인터를 인자로 받아 파일 기술자를 리턴
- 고수준에서 저수준으로 변환
fdopen 함수 사용하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <fcntl.h> #include <stdlib.h> #include <stdio.h> int main(void) { FILE *fp; int fd; char str[BUFSIZ]; fd = open("unix.txt", O_RDONLY); if (fd == -1) { perror("open"); exit(1); } fp = fdopen(fd, "r"); fgets(str, BUFSIZ, fp); printf("Read : %s\n", str); fclose(fp); return 0; } |
fileno 함수 사용하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> int main(void) { FILE *fp; int fd, n; char str[BUFSIZ]; fp = fopen("unix.txt", "r"); if (fp == NULL) { perror("fopen"); exit(1); } fd = fileno(fp); printf("fd : %d\n", fd); n = read(fd, str, BUFSIZ); str[n] = '\0'; printf("Read : %s\n", str); close(fd); return 0; } | cs |
반응형
'Programming > C/C++' 카테고리의 다른 글
C/Linux 파일 정보 검색 (0) | 2017.11.02 |
---|---|
C/고수준 파일 입출력/임시 파일 생성 (0) | 2017.10.26 |
C/고수준 파일 입출력/파일 오프셋 지정 및 이동, 저장 (0) | 2017.10.26 |
C/고수준 파일 입출력/형식 기반 입출력 함수 (0) | 2017.10.26 |
C/고수준 파일 입출력/버퍼 기반 입출력 함수 (0) | 2017.10.26 |