본문 바로가기

System/Linux

리눅스에서 파일 작업

파일 관련 시스템 콜 함수

- write
: 파일 디스크립터에 맞게 buffer를 가져다가 n바이트만큼 파일에 쓴다.
: 성공하면, 0을 리턴 실패하면 -1, 이고 에러가 발생할 경우 적절한 에러코드가 넘어온다.
#include <unistd.h>

size_t write(int fildes, const void* buf, size_t nbytes); 

-read
: 파일 디스크립터에 맞게 파일로부터 n바이트만큼 읽어다가 buffer로 읽어들인다.
: 성공하면 읽어들인 값을 리턴, 리턴 값이 0이면 읽어들인 값이 없다는 의미고, 실패하면 -1을 리턴한다.
#include <unistd.h>

size_t read(int fildes, void* buf, size_t nbytes);

- open
:새로운 파일 디스크립터를 생성하기 위한 시스템 콜 함수
int open(const char* path, int oflags);
int open(const char* path, int oflags, mode_t mode);

파일 경로나 디바이스를 접근할 수 있게 함. read/write를 비롯한 기타 시스템 콜을 할 수 있는 파일 디스크립터를 리턴해주고 이는 유일하기 때문에 다른 프로세스와 공유될 수 없다. 동시에 동일한 파일을 open하더라도 그들의 파일 디스크립터는 구분되고 순차적으로 실행.
:oflags의 옵션
O_RDONLY - 읽기 전용
O_WRONLY - 쓰기 전용
O_RDWR - 읽고 쓰기
뿐만 아니라 비트연산을 통해 부가적인 옵션 수행 가능
O_APPEND - 파일 끝에 쓰기
O_TRUNC - 파일 사이즈를 0으로 만듦. 존재하는 컨텐츠를 버림
O_CREAT - 파일을 생성. 필요한 경우 mode옵션을 통해 권한도 함꼐 부여할 수 있음
O_EXCL - 
:초기 권한
S_IRUSR: 소유자에게 읽기 권한
S_IWUSR:  소유자에게 쓰기 권한
S_IXUSR: 소유자에게 실행 권한
S_IRGRP: 그룹에게 읽기 권한
S_IWGRP: 그룹에게 쓰기 권한
S_IXGRP: 그룹에게 실행 권한
S_IROTH: 다른 이에게 읽기 권한
S_IWOTH: 다른 이에게 쓰기 권한
S_IXOtH: 다른 이에게 실행 권한

예) 
open("myfile", O_CREAT, S_IRUSR | S_IXOTH); // 소유자에게 읽기 권한, 다른 이에게 실행 권한을 줌.
-umask
:파일이 생성할 때가 아니라 도중에 파일 권한을 변경 시키는 커맨드

- close
- ioctl

-카피 프로그램 샘플
:기본 시스템 콜 함수를 이용한 경우

'System > Linux' 카테고리의 다른 글

시작하세요 하둡 프로그래밍  (0) 2012.11.14
리눅스 파일 다루기  (0) 2012.09.17
하둡 기반의 규모 확장성 있는 트래픽.pdf  (0) 2012.08.12
PacketCount 예제  (0) 2012.08.12
하둡 관련 링크  (0) 2012.08.10