Manpages

이 름

open, creat − 파 일 이 나 장 치 를 열 고 생 성 한 다 .

사 용 법

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *
pathname, int flags, mode_t mode);
int creat(const char *
pathname, mode_t mode);

설 명

open() 시 스 템 호 출 은 파 일 디 스 크 립 터 에 서 경 로 명 전 환 에 사 용 된 다 . 호 출 이 성 공 하 면 , 반 환 되 는 파 일 디 스 크 립 터 는 프 로 세 스 를 위 해 열 리 지 않 는 다 . 이 호 출 은 모 든 다 른 프 로 세 스 가 공 유 하 지 않 는 새 로 운 파 일 을 생 성 한 다 .

flags 는 파 일 을 read-only, write-only, read/write로 여 는 요 청 을 하 는 O_RDONLY, O_WRONLY or O_RDWR 중 하 나 이 다 .

flags 는 또 한 다 음 중 하 나 이 상 을 가 진 bitwise-or’d 일 런 지 모 른 다 :
O_CREAT

파 일 이 없 으 면 생 성 될 것 이 다 .

O_EXCL

When used with O_CREAT 를 사 용 할 때 , 파 일 이 이 미 존 재 한 다 면 에 러 나 파 일 을 여 는 데 실 패 할 것 이 다 . O_EXCL 는 NFS 파 일 시 스 템 을 깬 다 . 잠 금 파 일 을 사 용 하 는 automic파 일 잠 금 을 실 행 하 기 위 한 솔 루 션 은 같 은 파 일 시 스 템 에 특 정 파 일 을 생 성 하 기 위 함 이 다 .

O_NOCTTY

경 로 명 이 터 미 널 장 치 를 언 급 한 다 면 tty(4) 를 본 다 .

O_TRUNC

파 일 이 이 미 존 재 한 다 면 그 것 은 생 략 될 것 이 다 .

O_APPEND

파 일 이 추 가 모 드 에 열 려 있 다 . 각 각 기 록 되 기 전 에 파 일 포 인 터 는 lseek 가 있 는 것 처 럼 파 일 의 끝 에 위 치 한 다 . O_APPEND 는 적 어 도 하 나 이 상 의 프 로 세 스 가 파 일 에 데 이 타 를 추 가 한 다 면 NFS파 일 시 스 템 상 에 변 질 (correpted)된 파 일 을 이 끈 다 . 이 것 은 NFS가 파 일 에 추 가 를 지 원 하 지 않 기 때 문 이 다 . 그 래 서 클 라 이 언 트 커 널 은 그 것 을 시 뮬 레 이 트 한 다 .

O_NONBLOCK or O_NDELAY

파 일 은 비 블 록 모 드 로 열 린 다 .

O_SYNC

파 일 은 입 출 력 동 기 화 를 위 해 열 린 다 . 파 일 디 스 크 립 터 결 과 모 든 writes 는 데 이 타 가 물 리 적 으 로 하 드 웨 어 로 기 록 될 때 까 지 호 출 프 로 세 스 를 블 록 화 할 것 이 다 . 아 래 의 RESTRICTIONS를 본 다 .

O_NOFOLLOW

경 로 명 이 심 볼 릭 링 크 라 면 , 파 일 열 기 는 실 패 한 다 . 이 것 은 리 눅 스 버 전 2.1.126에 추 가 된 freeBSD확 장 이 다 . 경 로 명 의 초 기 구 성 인 심 볼 릭 링 크 는 계 속 따 를 것 이 다 . glibc2.0.100의 헤 더 와 후 에 이 플 래 그 의 정 의 를 포 함 한 다 ; 커 널 2.1.126이 전 에 서 사 용 한 다 면 무 시 할 것 이 다 .

O_DIRECTORY

경 로 명 이 디 렉 토 리 가 아 니 라 면 , 파 일 열 기 는 실 패 할 것 이 다 . 이 플 래 그 는 리 눅 스 의 특 징 이 고 , opendir(3)가 FIFO나 테 입 장 치 에 호 출 된 다 면 서 비 스 의 거 부 문 제 를 피 하 기 위 해 리 눅 스 커 널 버 전 2.1.126에 추 가 되 었 다 . 그 러 나 opendir는 외 부 에 서 사 용 될 수 없 다 .

O_LARGEFILE

대 용 량 파 일 시 스 템 을 지 원 하 는 32비 트 시 스 템 은 31비 트 로 는 열 수 없 는 크 기 의 파 일 을 사 용 할 수 있 다 . 리 눅 스 커 널 은 이 것 을 아 직 은 지 원 하 지 못 하 지 만 , glibc 2.1에 서 테 스 팅 되 었 다 .

몇 몇 이 러 한 옵 션 플 래 그 는 파 일 이 열 린 후 사 용 하 는 fcntl 가 바 뀔 수 있 다 .

모 드 는 새 로 운 파 일 이 생 성 되 면 사 용 권 한 을 지 정 한 다 . 대 개 프 로 세 스 의 umask 로 수 정 한 다 : 생 성 된 파 일 의 권 한 은 (mode & ~umask) 이 다 .

다 음 의 심 볼 릭 상 수 는 모 드 를 위 해 제 공 된 다 :
S_IRWXU

00700 사 용 자 (파 일 소 유 자 )는 읽 기 , 쓰 기 , 실 행 권 한 이 있 다 .

S_IRUSR (S_IREAD)

00400 사 용 자 는 읽 기 권 한 이 있 다 .

S_IWUSR (S_IWRITE)

00200 사 용 자 는 쓰 기 권 한 이 있 다 .

S_IXUSR (S_IEXEC)

00100 사 용 자 는 실 행 권 한 이 있 다 .

S_IRWXG

00070 그 룹 은 읽 기 , 쓰 기 , 실 행 권 한 이 있 다 .

S_IRGRP

00040 그 룹 은 읽 기 권 한 이 있 다 .

S_IWGRP

00020 그 룹 은 쓰 기 권 한 이 있 다 .

S_IXGRP

00010 그 룹 은 실 행 권 한 이 있 다 .

S_IRWXO

00007 기 타 사 용 자 는 읽 기 , 쓰 기 , 실 행 권 한 이 있 다 .

S_IROTH

00004 기 타 사 용 자 는 읽 기 권 한 이 있 다 .

S_IWOTH

00002 기 타 사 용 자 는 쓰 기 권 한 이 있 다 .

S_IXOTH

00001 기 타 사 용 자 는 실 행 권 한 이 있 다 . 모 드 는 항 상 O_CREAT플 래 그 일 때 지 정 되 어 야 만 하 고 , 그 밖 에 는 무 시 한 다 .

생 성O_CREAT|O_WRONLY|O_TRUNC 와 일 치 하 는 플 래 그 를 가 진 파 일 열 기 와 일 치 한 다 .

반 환 값

열 기 와 생 성 은 에 러 가 나 면 새 로 운 파 일 디 스 크 립 터 를 반 환 하 거 나 −1을 반 환 한 다 . 이 런 경 우 errno 는 적 절 히 설 정 된 다 . Note that 열 기 는 장 치 파 일 을 열 순 있 지 만 , 생 성 은 장 치 파 일 을 생 성 할 수 없 는 것 을 주 지 한 다 . 대 신 mknod(2) 을 사 용 한 다 .

UID 맵 핑 이 가 능 한 NFS 파 일 시 스 템 에 서 열 기 는 파 일 디 스 크 립 터 를 반 환 하 지 만 , read(2)는 거 부 된 다 . 이 것 은 클 라 이 언 트 가 권 한 검 사 에 의 해 열 기 를 실 행 하 지 만 UID 맵 핑 은 서 버 에 의 해 실 행 할 수 있 기 때 문 이 다 .

에 러

EEXIST

경 로 명 이 이 미 존 재 하 고 , O_CREAT and O_EXCL 가 사 용 된 다 .

EISDIR

경 로 명 이 디 렉 토 리 를 참 조 하 고 , 접 근 은 복 잡 한 기 록 을 요 구 했 다 .

EACCES

요 청 한 파 일 접 근 은 거 부 되 거 나 경 로 명 의 디 렉 토 리 중 하 나 가 실 행 권 한 을 찾 을 수 없 거 나 파 일 이 아 직 존 재 하 지 않 고 부 모 디 렉 토 리 접 근 이 거 부 됐 다 .

ENAMETOOLONG

경 로 명 이 너 무 길 다 .

ENOENT

A directory component in 경 로 명 의 디 렉 토 리 가 없 거 나 심 볼 릭 링 크 가 깨 졌 다 .

ENOTDIR

A component used as a directory in 경 로 명 에 디 렉 토 리 로 써 사 용 되 는 것 이 없 다 . 사 실 디 렉 토 리 나 O_DIRECTORY가 지 정 되 었 고 경 로 명 이 디 렉 토 리 가 아 니 다 .

ENXIO

O_NONBLOCK | O_WRONLY가 설 정 되 고 , 지 정 한 파 일 이 FIFO이 고 어 떠 한 프 로 세 스 도 읽 기 위 해 열 린 파 일 이 없 다 . 또 는 , 파 일 이 장 치 파 일 이 고 일 치 하 는 장 치 가 없 다 .

ENODEV

경 로 명 이 장 치 파 일 을 참 조 하 고 , 일 치 하 는 장 치 가 없 다 .

EROFS

경 로 명 이 read-only 파 일 시 스 템 의 파 일 을 참 조 하 고 쓰 기 접 근 이 요 청 됐 다 .

ETXTBSY

경 로 명 이 현 재 실 행 중 인 실 행 이 미 지 파 일 을 참 조 하 고 쓰 기 권 한 접 근 이 요 청 되 었 다 .

EFAULT

경 로 명 이 당 신 이 접 근 있 는 주 소 공 간 밖 을 가 리 킨 다 .

ELOOP

심 볼 릭 링 크 가 너 무 많 다 . 경 로 명 이 나 O_NOFOLLOW가 지 정 되 었 지 만 경 로 명 이 심 볼 릭 링 크 이 다 .

ENOSPC

경 로 명 이 생 성 되 었 지 만 장 치 가 경 로 명 이 포 함 하 는 장 치 가 새 로 운 파 일 을 위 한 공 간 이 없 다 .

ENOMEM

커 널 메 모 리 가 부 족 하 다 .

EMFILE

프 로 세 스 가 이 미 파 일 열 기 의 최 대 값 에 찼 다 .

ENFILE

파 일 열 기 의 총 합 제 한 에 도 달 했 다 .

호 환

SVr4, SVID, POSIX, X/OPEN, BSD 4.3

제 한

POSIX은 O_SYNC, O_DSYNCO_RSYNC에 일 치 하 는 입 출 력 동 기 화 의 세 가 지 다 른 변 수 를 제 공 한 다 . 현 재 (2.1.130) 이 런 것 들 은 리 눅 스 에 서 모 두 같 은 뜻 이 다 .

관 련 항 목

read(2), write(2), fcntl(2), close(2), link(2), mknod(2), mount(2), stat(2), umask(2), unlink(2), socket(2), fopen(3), fifo(4)

역 자

ASPLINUX<man [AT] asp-linux.kr>, 2000년 7월 29