_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.