* made by so_sal
* http://sosal.tistory.com/
*/
open()
1. 함수의 정의
2. 매개변수
3. 권한
close()
1. 함수의 정의
#include <fcnt1.h> //file control header
#include <sys/types.h>
#include <sys/stat.h>
int open( const char *path, int oflags );
int open( const char *path, int oflags, mode_t mode );
open 함수는 path 매개변수의 경로를 통해서 열고 파일 서술자를 리턴합니다.
파일 서술자를 이용해 파일컨트롤, read, write 등 시스템콜을 이용할 수 있습니다.
open 은 파일 또는 장치로의 접근 경로를 만듭니다..
open 함수의 리턴값,, 파일 서술자는 프로세스 독립적으로 고유함
:: 프로세스마다 입력(0),출력(1),에러(2) 라는 파일 서술자를 기본적으로 가지는데,
:: open, pipe, socket 함수 등을 통해 파일 서술자를 추가시킬 수 있다.
:: dup1, dup2나 FD_DUPFD를 통해 복사도 가능하다.
2. 매개변수
//parameters
path : Filename.
oflag : Type of operations allowed.
pmode : Permission mode.
//Return Value
각 open 함수는 열려진 파일의 서술자를 리턴하는데, 그 값은 파일 또는 장치를 가리키게 됩니다.
에러시 -1 호출
oflags 상수
O_RDONLY : 읽기 전용으로 연다 // read
O_WRONLY : 쓰기 전용으로 연다 // write
O_RDWR : 일기와 쓰기 모두 가능하게 한다 // read, write
O_APPEND : 자료를 파일의 끝에서부터 기록한다 // 이어쓰기
O_TRUNC : 파일의 길이를 0 으로 만든다. 기존 내용은 폐기된다 // 새로쓰기
O_CREAT : *path를 만족하는 파일이 없다면, 그 경로로 파일을 생성
O_EXCL : O_CREATE를 사용할때 함께 쓰는데, 만들려는 파일이 이미 있다면 오류를 발생
mode 상수
S_IRUSR : 읽기 권한, 소유자
S_IWUSR : 쓰기 권한, 소유자
S_IXUSR : 실행 권한, 소유자
S_IRGRP : 읽기 권한, 그룹
S_IWGRP : 쓰기 권한, 그룹
S_IXGRP : 실행 권한, 그룹
S_IROTH : 읽기 권한, 다른 사용자들
S_IWOTH : 쓰기 권한, 소유자
S_IXOTH : 실행 권한, 소유자
S_I + (R,W,X) + (USR,GRP,OTH) 로 쉽게 외울 수 있습니다.
ex ) int a = open( "file", O_CREAT, S_IRUSR | S_IXOTH );
: 소유자가 읽을수 있고 다른 사용자들이 실행할 수 있는(그리고 그 외의 접근은 허용하지 않는) file 이라는 파일을 사용 // 없다면 생성, a는 open 되어진 파일 또는 장치를 가리키는 서술자
3. 권한
open flag " O_CREAT " 에 의해 생성된 파일은 유효 사용자 ID와 동일하게 설정된다.
그룹은 해당 파일의 부모 디렉터리의 그룹 ID와 같게 설정되거나, 파일을 생성한 프로세스의
유효 그룹ID와 동일하게 설정된다.
close :: 파일 서술자를 종료하는 함수
#include <unistd.h>
int close( int fildes );
The 'close' function closes the file associated with descriptor.
Return Value
성공시 0 반환, 실패시 -1 반환
Parameter
파일 서술자 fildes
ex)
위 open 예제에서 선언된 파일 서술자 a를 종료시..
int a = open( "file", O_CREAT, S_IRUSR | S_IXOTH );
close(a);
a를 가리키는 파일 서술자를 종료시킴
'Linux > Linux_programing' 카테고리의 다른 글
Socket - 02. Server socket (0) | 2009.10.03 |
---|---|
리눅스 Socket - socket(), sockaddr (0) | 2009.09.28 |
리눅스 FILE - read() 시스템콜 (1) | 2009.09.27 |
리눅스 FILE - Write() 시스템콜 (1) | 2009.09.27 |
리눅스 FILE - System call. (0) | 2009.09.27 |