ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ creat 함수 - 파일 생성
    C,C++ & Linux 2020. 4. 21. 23:41
    728x90

    crea 함수 기능

    파일을 만들어주는 함수  (create 가 아님에 주의하자)

    함수 원형

    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    
    int creat(const char *filepath, mode_t mode);

    매개변수

    const char *filepath

    생성할 파일의 경로

     

    mode_t mode

    생성할 파일의 접근 권한을 명시

     

    기본 값

    파일 : 0666

    디렉토리 : 0777

     

    아래 옵션들은 bitwise 연산으로 여러개를 동시에 사용가능함

    S_IRWXU : 유저 읽기, 쓰기, 실행 권한 (Read, Write, Execute User)

    S_IRUSR : 유저 읽기 권한 (Read User)

    S_IWUSR : 유저 쓰기 권한 (Write User)

    S_IXUSR : 유저 실행 권한 (Execute User)

    S_IRWXG : 그룹 읽기, 쓰기, 실행 권한 (Read, Write, Execute Group)

    S_IRGRP : 그룹 읽기 권한

    S_IWGRP : 그룹 쓰기 권한
    S_IXGRP : 그룹 실행 권한

    S_IRWXO : 기타 사용자 읽기, 쓰기, 실행 권한 (Read, Write, Execute Other)

    S_IROTH : 기타 사용자 읽기 권한
    S_IWOTH : 기타 사용자 쓰기 권한
    S_IXOTH : 기타 사용자 실행 권한

     

    반환값

    성공 시 0, 실패 시 -1 리턴 후 errno 설정

    예제

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    
    int main() {
    	char *fname = "ssu_test.txt";
    	int fd;
    
    	if ((fd = creat(fname, 0666)) < 0) {
    		fprintf(stderr, "creat error for %s\n", fname);
    		exit(1);
    	}
    
    	printf("Success!\nFilename : %s\nDescriptor : %d\n", fname, fd);
    	close(fd);
    	exit(0);
    }
    

     

    예제 1 결과

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    
    int main() {
    	char *fname = "ssu_test.txt";
    	int fd;
    
    	if ((fd = creat(fname, 0666)) < 0) {
    		fprintf(stderr, "creat error for %s\n", fname);
    		exit(1);
    	}
    
    	close(fd);
    	fd = open(fname, O_RDWR);
    	printf("Success!\n<%s> is new readable and writable\n", fname);
    	exit(0);
    }
    

     

    예제2 결과

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    리눅스시스템프로그래밍 저자 : 홍지만
    https://book.naver.com/bookdb/book_detail.nhn?bid=14623672

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    댓글

Designed by Tistory.