Notice
Recent Posts
Recent Comments
Today
Total
05-17 00:00
Archives
관리 메뉴

Jeongchul Kim

리눅스 open - 리눅스 시스템 프로그래밍 본문

Linux

리눅스 open - 리눅스 시스템 프로그래밍

김 정출 2016. 2. 25. 15:41


리눅스 open - 리눅스 시스템 프로그래밍


open은 이미 존재하는 파일을 읽기 또는 쓰기용으로 열거나 새로운 파일을 생성하여 연다.


#include <fcntl.h> 헤더 파일을 사용


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


> pathname: 파일의 경로명

> flags : 오픈하는 방식을 지정

O_RDONLY : 읽기만 가능

O_WRONLY : 쓰기만 가능

O_RDWR : 읽기, 쓰기 모두 가능

O_CREAT : 경로의 파일이 존재하면 오픈, 없으면 새로 생성 후 오픈 -> 모드 지정

* 모드를 지정해야 파일에 대한 초기 권한이 지정, 모드 생략시 랜덤 지정

O_APPEND : 오픈하고 포인터의 위치가 0이나, 파일 쓰기를 시작하면 내용의 마지막 뒤로 이동

O_TRUNC : 오픈하고 포인터의 위치를 첫 부분(0)으로 이동한다.

> mode : 8진수로 이루어진 접근 권한 또는 10진수

> return값 : 성공적으로 수행하면 음이 아닌 정수형의 값이 반환되며, 이 값이 file descriptor가 된다.


open을 이용하여 한 파일을 읽고, 다른 파일로 복사하는 과정


#include <unistd.h>

#include <stdio.h>

#include <fcntl.h>

int main() {

      int fdin, fdout;

      ssize_t nread;

      char buffer[1024] = {0};

      fdin = open("temp1.txt", O_RDONLY);

      fdout = open("temp2.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);

      while((nread = read(fdin,buffer,1024))>0) {

              if(write(fdout,buffer,nread) < nread) {

                      close(fdin);

                      close(fdout);

              }

      }

      close(fdin);

      close(fdout);

}




Comments