Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Open

CuBook05

Функция

Открывает файл для чтения или записи.
 
Синтаксис

#include <fcntl.h>
#include <sys\stat.h> int open(const char *filename, int access [, unsigned mode]);
 
Прототип

io.h
 
Описание

Функция open открывает файл, имя которого определено параметром filename, и подготавливает его к последующим операциям чтения и/или записи, в зависимости от параметра access.

Для создания файла в обычном режиме, вы можете присвоить соответствующее значение _fmode, или при открытии файла указать опции O_CREAT и O_TRUNC связанные операцией побитового логического сложения (OR) с необходимым режимом передачи. К примеру:
open("xmp",O_CREAT|O_TRUNC|O_BINARY,S_IREAD);
создает двоичный файл с атрибутом только для чтения с именем XMP, причем, если он уже существует, то он обрезается до нулевой длины.

Для функции open параметр access конструируется путем логического побитового сложения флагов, перечисленных в двух следующих списках. Из первого списка может быть использован только один флаг, остальные флаги могут применяться в любых логических комбинациях.
 
Возвращаемое значение

При успешном завершении open возвращает целое неотрицательное число handle - логический номер открытого файла. Указатель файла (указатель текущей позиции) устанавливается на начало файла. При ошибке функция возвращает значение -1, и переменная errno получает одно из следующих значений:
ENOENT - маршрут или имя файла не найдены.
EMFILE - слишком много открытых файлов.
EACCES - доступ запрещен.
EINVACC - неверный код доступа.
 
Переносимость

Функция open поддерживается на системах UNIX. На версии 7 системы UNIX мнемоника O_тип не определена. Система UNIX SYSTEM 3 пользуется всеми мнемониками O_тип за исключением O_BINARY.
 
Пример

#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>

int main(void)
{
int handle;
char msg[] = "Hello world!";
if((handle = open("TEST.$$$",O_RDWR)) == -1) {
perror("Error:");
return 1;
}
_write(handle,msg,strlen(msg));
_close(Handle);
return 0;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий