CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
_open
_open
Функция Открывает файл для чтения или записи.
Синтаксис #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.
Смотрите также open, read, sopen.
Пример:
#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;
}
