티스토리 뷰
반응형
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; } |
반응형
'C언어' 카테고리의 다른 글
우분투에서 open()함수와 fopen()함수의 성능차이, 메모리 사용량은 얼마나 차이가 있나? (1) | 2024.02.24 |
---|---|
c코드에서 문자열과 함수명에 숫자가 들어 있는데, 이 숫자만 바꾸어서 여러개의 코드를 작성하는 매크로, C언어 매크로 장단점 (0) | 2024.02.18 |
C언어 책을 만들다가 느낀것... (0) | 2023.08.08 |
STM32 Cube IED 에서 왼쪽 프로젝트 탐색 창 보이기 메뉴 (0) | 2023.04.30 |
아두이노 소스를 수정없이 gcc 컴파일러로 빌드 할 수 있나요? (0) | 2023.04.23 |