Partilhar via


_sopen_s, _wsopen_s

Abre um arquivo para compartilhamento.Essas são sistema autônomo versões de _sopen e _wsopen com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no CRT.

errno_t _sopen_s(
   int* pfh,
   const char *filename,
      int oflag,
   int shflag,
   int pmode
);
errno_t _wsopen_s(
   int* pfh,
   const wchar_t *filename,
   int oflag,
   int shflag,
   int pmode,
);

Parâmetros

  • [out] pfh
    O identificador de arquivo, ou -1 em caso de erro.

  • [in]filename
    Nome de arquivo.

  • [in]oflag
    Tipo de operações permitidas.

  • [in]shflag
    Tipo de compartilhamento permitido.

  • [in]pmode
    Configuração de permissão.

Valor de retorno

Um valor retornado diferente de zero indica um erro, no qual caso errno é conjunto a um dos seguintes valores.

  • EACCES
    Fornecido o caminho é um diretório ou arquivo é somente leitura, mas foi tentada uma operação de em em aberto para gravação.

  • EEXIST
    _O_CREAT e _O_EXCL sinalizadores forem especificados, mas filename já existe.

  • EINVAL
    Invalid oflag, shflag, orpmode argument, or pfh or filename was a null pointer.

  • EMFILE
    Não há mais descritores de arquivo disponível.

  • ENOENT
    Arquivo ou caminho não encontrado.

Se um argumento inválido psistema autônomosed para a função, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, errno é definido como EINVAL e EINVAL será retornado.

Para obter mais informações sobre esses e outros códigos de retorno, consulte _doserrno, errno, _sys_errlist e _sys_nerr.

No caso de erro, -1 será retornado por meio de pfh (a menos que pfh é um ponteiro nulo).

Comentários

The _sopen_s função abre o arquivo especificado por filename e prepara o arquivo para leitura compartilhada ou gravação, sistema autônomo definidos pela oflag e shflag. _wsopen_s é uma versão de caractere largo da _sopen_s; o filename argumento para _wsopen_s é uma seqüência de caracteres largos. _wsopen_s e _sopen_s tenham comportamento idêntico caso contrário.

Mapeamentos de rotina de texto genérica

Rotina tchar.h

_UNICODE e _MBCS não definido

_MBCS definido

_UNICODE definido

_tsopen_s

_sopen_s

_sopen_s

_wsopen_s

A expressão de inteiro oflag é formado pela combinação de uma ou mais constantes manifesto, definidos no arquivo fcntl.h. Quando dois ou mais constantes formam o argumento oflag, eles são combinados com o operador OR bit a bit ( | ).

  • _O_APPEND
    Reposiciona um ponteiro de arquivo para o participante do arquivo antes de cada operação de gravar.

  • _O_BINARY
    Abre um arquivo no modo binário (não traduzido).(See fopen para obter uma descrição do modo binário.)

  • _O_CREAT
    Cria e abre o novo arquivo para gravação.Não tem efeito se o arquivo especificado por filename existe.

  • _O_CREAT| _O_SHORT_LIVED
    Crie um arquivo temporário e se possível não liberar para disco.

  • _O_CREAT| _O_TEMPORARY
    Criar um arquivo sistema autônomo temporários; o arquivo é excluído quando o último descritor de arquivo é fechado.

  • _O_CREAT| _O_EXCL
    Retorna um valor de erro se o arquivo especificado por filename existe. Se aplica somente quando usada com _O_CREAT.

  • _O_NOINHERIT
    Impede a criação de um descritor de arquivo compartilhado.

  • _O_RANDOM
    Especifica principalmente acesso aleatório do disco.

  • _O_RDONLY
    Abre um arquivo para leitura apenas; não pode ser especificado com _O_RDWR ou _O_WRONLY.

  • _O_RDWR
    Abre um arquivo para ambos lendo e gravando; não pode ser especificado com _O_RDONLY ou _O_WRONLY.

  • _O_SEQUENTIAL
    Especifica principalmente acesso seqüencial do disco.

  • _O_TEXT
    Abre um arquivo no modo de texto (traduzido).(Para obter mais informações, consulte Texto e o modo binário E/s de arquivos and fopen.)

  • _O_TRUNC
    Abre um arquivo e trunca comprimento zero; o arquivo deve ter permissão de gravar.Não é possível especificar este sinalizar com _O_RDONLY. _O_TRUNC usado com _O_CREAT Abre um arquivo existente ou cria um novo arquivo.

    Observação:

    O _O_TRUNC sinalizar destrói o Sumário do arquivo especificado.

  • _O_WRONLY
    Abre um arquivo para gravação apenas; não pode ser especificado com _O_RDONLY ou _O_RDWR.

  • _O_U16TEXT
    em aberto o arquivo no modo Unicode UTF-16.Essa opção está disponível em Visual C++ 2005.

  • _O_U8TEXT
    em aberto o arquivo no modo Unicode UTF-8.Essa opção está disponível em Visual C++ 2005.

  • _O_WTEXT
    Abra o arquivo no modo Unicode.Essa opção está disponível em Visual C++ 2005.

Para especificar o modo de acesso do arquivo, você deve especificar um dos _O_RDONLY, _O_RDWR, ou _O_WRONLY. Não há nenhum valor padrão para o modo de acesso.

If _sopen_s é chamado com _O_WRONLY|_O_APPEND (modo acrescentar) e _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, primeiro ele tentará em em aberto o arquivo para leitura e gravação, leia a BOM reabri-lo para gravar apenas. Se em em aberto o arquivo para leitura e gravação falhar, ele será em aberto o arquivo para gravação só e usar o valor padrão para a configuração do modo Unicode.

O argumento shflag é uma expressão constante que pode ser um das seguintes constantes manifesto, definidas no Share.h.

  • _SH_DENYRW
    Nega o acesso de leitura e gravar para um arquivo.

  • _SH_DENYWR
    Nega o acesso de gravar para um arquivo.

  • _SH_DENYRD
    Nega o acesso de leitura para um arquivo.

  • _SH_DENYNO
    Permissões de leitura e gravar acesso.

The pmode argumento é sempre necessário, ao contrário de em _sopen. Quando você especifica _O_CREAT, se o arquivo não existir, pmode Especifica permissão conjunto tings o arquivo, que são conjunto quando o novo arquivo é fechado na primeira vez. Caso contrário, pmode é ignorado. pmode é uma expressão de inteiros que contém uma ou ambas as constantes do manifesto _S_IWRITE e _S_IREAD, definido no SYS\Stat.h. Quando as duas constantes forem fornecidos, eles são combinados com o operador OR bit a bit.O significado de pmode é sistema autônomo segue.

  • _S_IWRITE
    Permissão de escrita.

  • _S_IREAD
    Permissão de leitura.

  • _S_IREAD | _S_IWRITE
    Permissão de leitura e gravação.

Se não receber permissão de gravar, o arquivo é somente leitura.Sob o sistema operacional Windows, todos os arquivos estão legíveis; não é possível conceder a permissão somente gravar.Assim, os modos de _S_IWRITE e _S_IREAD | _S_IWRITE são equivalentes.

_sopen_s aplica-se a máscara de permissão de arquivo corrente para pmode antes de definir as permissões (consulte _umask).

Requisitos

Rotina

Cabeçalho necessário

Cabeçalho opcional

_sopen_s

<io.h>

<fcntl.h>, <sys/types.h>, <sys/stat.h>, <share.h>

_wsopen_s

<io.h> ou <wchar.h>

<fcntl.h>, <sys/types.h>, <sys/stat.h>, <share.h>

Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.

Exemplo

Consulte o exemplo para _locking.

Consulte também

Referência

E/S de nível baixo

_Close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_Open, _wopen