C 언어에서 파일을 읽고 쓰기 전에 운영체제에서 파일 번호를 받아야 한다. 이 번호를 파일 디스크립터라고 하고 open()으로 얻는다.
작게 실행해 보기
#define _GNU_SOURCE
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main(void) {
int fd = open("/dev/null", O_RDONLY);
if (fd < 0) {
perror("open");
return 1;
}
printf("fd=%d\n", fd);
if (close(fd) < 0)
return 1;
return 0;
}읽기 전용 /dev/null을 열고 얻은 번호를 닫는다. 파일 번호는 실행 환경마다 달라질 수 있으며 0도 정상 결과다.
반환값과 주의점
성공하면 0 이상의 파일 디스크립터, 실패하면 -1을 반환하고 errno를 설정한다. 0도 정상 번호다.
O_RDONLY는 읽기, O_WRONLY는 쓰기다. O_CREAT로 새 파일을 만들 때는 세 번째 인수로 권한도 넘긴다. O_TRUNC는 기존 내용을 지우므로 이름만 보고 넣으면 안 된다.
예제 실행 방법
gcc -std=c11 -Wall -Wextra example.c -lm -o example
./example
답글 달기