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; }