Compartilhar via


_sopen_s, _wsopen_s

Abre um arquivo para o compartilhamento.Estas são as versões do _sopen e _wsopen com aprimoramentos de segurança, conforme descrito em Recursos 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, no caso de um erro.

  • [in]filename
    Nome do 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 de retorno diferente de zero indica um erro, caso em que errno é definida para um dos seguintes valores.

  • EACCES
    Caminho especificado é um diretório, ou arquivo é somente leitura, mas foi tentada uma operação de abrir-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íveis.

  • ENOENT
    Arquivo ou caminho não encontrado.

Se um argumento inválido for passado para a função, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, errno for definido como EINVAL e EINVAL é 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 um erro, -1 será retornado por meio de pfh (a menos que pfh é um ponteiro nulo).

Comentários

O _sopen_s função abre o arquivo especificado por filename e prepara o arquivo compartilhado de leitura ou gravação, conforme definido pela oflag e shflag._wsopen_sé uma versão de caractere largo de _sopen_s; o filename argumento para _wsopen_s é uma seqüência de caracteres largos._wsopen_se _sopen_s tenham comportamento idêntico caso contrário.

Mapeamentos de rotina de texto genérico

Rotina de TCHAR.h

_ Unicode e _ MBCS do arquivo não definido

_ MBCS do arquivo 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, definidas no arquivo Fcntl.h.Quando dois ou mais constantes formam o argumento oflag, eles são combinados com o (operador bit a bit ou | ).

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

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

  • _O_CREAT
    Cria e abre um novo arquivo para gravação.Não terá efeito se o arquivo especificado pelo filename existe.

  • _O_CREAT| _O_SHORT_LIVED
    Criar um arquivo como temporário e, se possível não liberou para o disco.

  • _O_CREAT| _O_TEMPORARY
    Criar um arquivo como temporário. o arquivo é excluído quando o último descritor de arquivo é fechado.

  • _O_CREAT| _O_EXCL
    Retorna um valor de erro se o arquivo especificado pelo filename existe.Aplica-se somente quando usado 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. não pode ser especificado com _O_RDWR ou _O_WRONLY.

  • _O_RDWR
    Abre um arquivo para leitura e escrita; 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 em modo de texto (traduzido).(Para obter mais informações, consulte texto e binário e/S de arquivos de modo e fopen.)

  • _O_TRUNC
    Abre um arquivo e trunca como zero comprimento; o arquivo deve ter permissão de gravação.Você não pode especificar esse sinalizador com _O_RDONLY._O_TRUNC usado com _O_CREAT abre um arquivo existente ou cria um novo arquivo.

    ObservaçãoObservação

    O _O_TRUNC sinalizador destrói o conteúdo do arquivo especificado.

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

  • _O_U16TEXT
    Abra o arquivo no modo Unicode UTF-16.

  • _O_U8TEXT
    Abra o arquivo no modo Unicode UTF-8.

  • _O_WTEXT
    Abra o arquivo no modo Unicode.

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

Se _sopen_s é chamado com _O_WRONLY|_O_APPEND (modo de acréscimo) e _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, ele irá tentar abrir o arquivo para leitura e gravação, primeiro leia a BOM e depois reabri-la somente para gravação.Se abrir o arquivo para leitura e gravação falhar, ele irá abri-lo somente para gravação e usar o valor padrão para a configuração do modo Unicode.

O argumento shflag é uma expressão de constante que consiste em uma das seguintes constantes manifesto, definidas em Share.h.

  • _SH_DENYRW
    Nega o acesso de leitura e gravação para um arquivo.

  • _SH_DENYWR
    Nega o acesso de gravação para um arquivo.

  • _SH_DENYRD
    Nega o acesso de leitura para um arquivo.

  • _SH_DENYNO
    Permissões de leitura e gravação acesso.

O pmode argumento é sempre necessário, ao contrário em _sopen.Quando você especifica _O_CREAT, se o arquivo não existir, pmode Especifica as configurações de permissão do arquivo, que são definidas quando o novo arquivo for fechado na primeira vez.Caso contrário, pmode será ignorado.pmodeé uma expressão de inteiros que contém uma ou ambas as constantes de manifesto _S_IWRITE e _S_IREAD, definido em SYS\Stat.h.Quando as duas constantes forem fornecidas, eles são combinados com o operador bit a bit ou.O significado de pmode é o seguinte.

  • _S_IWRITE
    Permissão de escrita.

  • _S_IREAD
    Permissão de leitura.

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

Se a permissão de gravação não for fornecido, 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 para gravação.Assim, os modos de _S_IWRITE e _S_IREAD | _S_IWRITE são equivalentes.

_sopen_saplica-se a máscara de permissão de arquivo atual 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

Nível baixo e/S

Close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

Open, _wopen