_open, _wopen

Открывает файл.Эти функции нерекомендуемый, поскольку более безопасные версии недоступны; см. _sopen_s, _wsopen_s.

int _open(
   const char *filename,
   int oflag [,
   int pmode] 
);
int _wopen(
   const wchar_t *filename,
   int oflag [,
   int pmode] 
);

Параметры

  • filename
    Имя файла.

  • oflag
    Тип допустимых операций.

  • pmode
    Режим разрешения.

Возвращаемое значение

Каждая из этих функций возвращает идентификатор файла, открытого файла.Возвращаемое значение -1 означает ошибку, в которой регистр errno набор одно из следующих значений.

  • EACCES
    Попытка открыть файл, доступный только для чтения для записи, режим файла не разрешает совместное использование, операции или заданный путь каталога.

  • EEXIST
    _O_CREAT и _O_EXCL указанные флаги, но filename уже существует.

  • EINVAL
    Недопустимо oflag OR pmode аргумент.

  • EMFILE
    Больше нет доступных идентификаторов файла (слишком много открытых файлов).

  • ENOENT
    Не обнаружены файла или путь.

Дополнительные сведения об этих и других кодах возврата см. _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

_open функция открывает файл, заданный by filename и подготавливает файл для чтения или записи, в соответствии с которым следуют oflag._wopen версия расширенных символов _open; filename аргумент _wopen строка символов._wopen и _open поступайте совпадают, в противном случае.

Сопоставления подпрограммы Родов-Текста

Подпрограмма Tchar.h

Не указанные _UNICODE и _MBCS

Указанный символ _MBCS

Указанный _UNICODE

_topen

_open

_open

_wopen

oflag выражение целое число, образованное из одного или нескольких из следующих констант манифестов или константные сочетания указанных в Fcntl.h.

  • _O_APPEND
    Перемещает указатель файла в конец файла перед каждой операции записи.

  • _O_BINARY
    Файл открытых в бинарном режиме (untranslated).(См. fopen описание binary режима).

  • _O_CREAT
    Создает и открывает новый файл для записи.Не действует, если указанный файл by filename существует.pmode если необходим аргумент _O_CREAT указывает.

  • _O_CREAT| _O_SHORT_LIVED
    Создайте файл как временно и, если возможно, не flush на диск.pmode если необходим аргумент _O_CREAT указывает.

  • _O_CREAT| _O_TEMPORARY
    Создайте файл как временно; файл удаляется, когда последний идентификатор файла закрыт.pmode если необходим аргумент _O_CREAT указывает.

  • _O_CREAT| _O_EXCL
    Возвращает значение ошибки, если указанный файл by filename существует.Применяется только при использовании с _O_CREAT.

  • _O_NOINHERIT
    Предотвращает создание дескриптора файла роли public.

  • _O_RANDOM
    Указывает, что позволяет оптимизировать для прячущ в кэше, но не выпусками, прямой доступ с диска.

  • _O_RDONLY
    Открывает файл только для чтения; не может быть указан с _O_RDWR OR _O_WRONLY.

  • _O_RDWR
    Файл открытых как для чтения, так и для записи. нельзя указать этот пометить с _O_RDONLY OR _O_WRONLY.

  • _O_SEQUENTIAL
    Указывает, что позволяет оптимизировать для прячущ в кэше, но не выпусками, последовательный доступ с диска.

  • _O_TEXT
    Открывает файл в режиме () переведенного текста.(Дополнительные сведения см. в разделе ВВОДА-ВЫВОДА текста и файла режим binary и fopen.)

  • _O_TRUNC
    Открывает файл и усекает его в нулевую длину; файл должен иметь разрешение на запись.Нельзя указать этот пометить с _O_RDONLY._O_TRUNC используется с _O_CREAT открывает существующий файл или создания нового файла.

    ПримечаниеПримечание

    _O_TRUNC пометить удаляет содержимое указанного файла.

  • _O_WRONLY
    Открытие файла для записи только; не может быть указан с _O_RDONLY OR _O_RDWR.

  • _O_U16TEXT
    Открытие файла в режиме Юникода UTF-16.

  • _O_U8TEXT
    Открытие файла в режиме UTF-8 в юникоде.

  • _O_WTEXT
    Откройте файл находится в режиме в юникоде.

Чтобы задать режим доступа к файлу, необходимо определить, то _O_RDONLY" _O_RDWRили _O_WRONLY.Значение по умолчанию для режима доступа.

If _O_WTEXT используется, чтобы открыть файл для чтения _open считывает начало файла и проверки отметки порядка байтов (bom).Если спецификация, то файл обрабатывается как UTF-8 или UTF-16LE в зависимости от спецификации.Если метка отсутствует файл обрабатывается как ANSI.При открытии файла для записи using _O_WTEXT, UTF-16 используется.If _O_UTF8 использует файл всегда открывается в виде UTF-8 и если _O_UTF16 использует файл всегда открывается как UTF-16 независимо от любой предыдущей метки параметра или порядка байтов.

If _open вызывает с _O_WRONLY|_O_APPEND (режим и добавления) _O_WTEXT" _O_U16TEXTили _O_U8TEXTон сначала пытается открыть файл для чтения и записи, чтение спецификацию, а затем снова откройте его только для записи.Сбой при открытии файла для чтения и записи, она открытии файла для записи только и использует значения по умолчанию для настройки режима в юникоде.

Если два или более очевидные константы используются для формирования oflag аргумент, константы объединяется с оператором (побитовое или |).Описание режимов binary и текста см. в разделе ВВОДА-ВЫВОДА текста и файла режим binary.

pmode требуется только в тех случаях, когда аргумент _O_CREAT указывает.Если файл уже существует, pmode игнорирует.В противном случае - pmode задает параметры разрешения файла, задаваемые при новый файл закрыт the first time._open применяет к файл-разрешения текущую маску pmode прежде чем устанавливать разрешения (дополнительные сведения см. в разделе _umask).pmode выражение целого числа, содержащий одно или оба следующих очевидных констант определяется в схеме SYS \ Stat.h.

  • _S_IREAD
    Разрешенный только чтение.

  • _S_IWRITE
    Позволенная запись (эффективно позволяет считывать и записывать).

  • _S_IREAD | _S_IWRITE
    Разрешенные чтение и запись.

Если обе константы, они предоставляются соединении с оператором (побитовое или |).В Windows NT, все файлы четки, поэтому доступное только на запись разрешения недоступен; таким образом режимы _S_IWRITE и _S_IREAD | _S_IWRITE эквивалентны.

Если значение задано, за исключением приведенного выше pmode (даже если он определит допустимым pmode в другой операционной системе) или любого значения, кроме разрешенный oflag значения указаны, функция создает утверждение в режиме отладки и вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если выполнение может продолжить, функция возвращает -1 и присваивает errno В EINVAL.

Требования

Процедура

Обязательный заголовок

Необязательный заголовок

_open

<io.h>

<fcntl.h>" <sys или types.h>" <sys или stat.h>

_wopen

<io.h> OR <wchar.h>

<fcntl.h>" <sys или types.h>" <sys или stat.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Библиотеки

Все версии Библиотеки времени выполнения C.

Пример

// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
 * named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
 * for output. The files are then closed.
 */
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>

int main( void )
{
   int fh1, fh2;

   fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
   // Note: _open is deprecated; consider using _sopen_s instead
   if( fh1 == -1 )
      perror( "Open failed on input file" );
   else
   {
      printf( "Open succeeded on input file\n" );
      _close( fh1 );
   }

   fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD | 
                            _S_IWRITE ); // C4996
   if( fh2 == -1 )
      perror( "Open failed on output file" );
   else
   {
      printf( "Open succeeded on output file\n" );
      _close( fh2 );
   }
}

Output

Open succeeded on input file
Open succeeded on output file

Эквивалент в .NET Framework

См. также

Ссылки

ВВОДА-ВЫВОДА низкого уровня

_chmod, _wchmod

_close

_create, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen