티스토리 뷰

C언어

우분투-리눅스-open 함수

바람사탕 2024. 2. 17. 16:15
반응형

open()는 파일을 여는 함수이고, 윈도우와 리눅스에서 모드 사용이 가능하다고 합니다.

윈도우에서는 _open()와 같은 함수를 제공합니다.

아래와 같은 매크로를 사용하여, 윈도우와 리눅스에서 모두 사용이 가능합니다.

#ifdef _WIN32
  #include <windows.h>
  #define open _open
  #define close _close
  #define read _read
  #define write _write
#else
  #include <fcntl.h>
  #include <unistd.h>
#endif

 

 

파일을 열 때 사용되는 몇 가지 주요 플래그들은 다음과 같습니다:

O_RDONLY: 읽기 전용으로 파일 열기.
O_WRONLY: 쓰기 전용으로 파일 열기.
O_RDWR: 읽기 및 쓰기 모두 가능한 파일 열기.
O_CREAT: 파일이 없을 경우 새로 생성.
O_APPEND: 파일 끝에 추가 모드로 열기.
O_TRUNC: 파일을 열 때 이미 존재하는 경우 내용을 잘라내기(비우기).
예를 들어, O_WRONLY를 사용하여 파일을 열면 해당 파일은 읽기가 불가능하며, 쓰기 작업만 허용됩니다.

 

예제 코드

#include <fcntl.h>
#include <unistd.h>

int main() {
    const char *filePath = "example.txt";
    const char *dataToWrite = "Hello, World!\n";

    // 파일을 쓰기 전용으로 열기 (파일이 없으면 생성)
    int fileDescriptor = open(filePath, O_WRONLY | O_CREAT | O_TRUNC, 0666);

    if (fileDescriptor == -1) {
        perror("Error opening file");
        return 1;
    }

    // 파일에 데이터 쓰기
    if (write(fileDescriptor, dataToWrite, strlen(dataToWrite)) == -1) {
        perror("Error writing to file");
        close(fileDescriptor);
        return 1;
    }

    // 파일 닫기
    if (close(fileDescriptor) == -1) {
        perror("Error closing file");
        return 1;
    }

    return 0;
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함