Обработка файлов в C: изучение системных вызовов open и O_CREAT

Фраза «o_creat open» представляет собой комбинацию двух системных вызовов языка программирования C: openи O_CREAT. Эти системные вызовы используются для операций обработки файлов в Unix-подобных операционных системах, таких как Linux. Позвольте мне объяснить каждый из них и привести примеры кода.

  1. open: системный вызов openиспользуется для открытия файла и получения дескриптора файла, который является уникальным идентификатором открытого файла.. Он принимает три аргумента: путь к файлу, флаги и режим.

    Вот пример использования openдля открытия файла в режиме только для чтения:

    #include <fcntl.h>
    #include <stdio.h>
    #include <unistd.h>
    int main() {
       int fileDescriptor = open("example.txt", O_RDONLY);
       if (fileDescriptor == -1) {
           perror("Error opening the file");
           return 1;
       }
       printf("File opened successfully\n");
       close(fileDescriptor);
       return 0;
    }

    В этом примере функция openоткрывает файл «example.txt» в режиме только для чтения (O_RDONLY). Если операция открытия файла завершается неудачно, выводится сообщение об ошибке.

  2. O_CREAT: флаг O_CREATиспользуется в сочетании с системным вызовом openдля создания файла, если это не так. уже существует. Его следует использовать с флагом openO_WRONLY, O_RDWRили O_APPEND. Кроме того, вам необходимо предоставить права доступа к файлу, используя аргумент mode.

    Вот пример использования O_CREATдля создания нового файла, если он не существует:

    #include <fcntl.h>
    #include <stdio.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <unistd.h>
    int main() {
       int fileDescriptor = open("example.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
       if (fileDescriptor == -1) {
           perror("Error opening/creating the file");
           return 1;
       }
       printf("File opened/created successfully\n");
       close(fileDescriptor);
       return 0;
    }

    В этом примере функция openиспользуется с O_WRONLY | Флаги O_CREATдля открытия или создания файла «example.txt». S_IRUSR | Аргументы S_IWUSRопределяют права доступа к файлу (разрешения на чтение и запись для владельца файла).