Фраза «o_creat open» представляет собой комбинацию двух системных вызовов языка программирования C: openи O_CREAT. Эти системные вызовы используются для операций обработки файлов в Unix-подобных операционных системах, таких как Linux. Позвольте мне объяснить каждый из них и привести примеры кода.
-
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). Если операция открытия файла завершается неудачно, выводится сообщение об ошибке. -
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определяют права доступа к файлу (разрешения на чтение и запись для владельца файла).