Russian Belarusian English German Japanese Ukrainian

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

_open

CuBook25

Функция

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

#include <fcntl.h>
int _open(const char *filename, int oflags);
 
Прототип

io.h
 
Описание

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

Для функции _open параметр oflags в DOS 2.x ограничивается тремя значениями: O_RDONLY, O_WRONLY O_RDWR. В DOS 3.x вводятся дополнительные значения:
O_NOINHERIT - включается, если файл не может быть передан дочерней программе.
O_DENYALL - позволяет доступ к файлу только по текущему номеру handle.
O_DENYWRITE - позволяет любому другому открытию файла только чтение.
O_DENYREAD - позволяет любому другому открытию файла только запись.
O_DENYNONE - разрешает разделенное открытие файла.

Эти символические константы (O_...) определены в файле fcntl.h.

В вызов функции open под версией DOS 3.x может быть включено только одно из значений O_DENYxxx. Эти атрибуты разделения доступа к файлу даны в дополнение к операциям блокировки.

Максимальное число одновременно открытых файлов задается, как HANDLE_MAX.
 
Возвращаемое значение

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

Функция _open уникальна для DOS.
 
Пример

#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

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