Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Abre um arquivo para compartilhamento. Estão disponíveis versões mais seguras destas funções: ver _sopen_s, _wsopen_s.
Sintaxe
int _sopen(
const char *filename,
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
const wchar_t *filename,
int oflag,
int shflag [,
int pmode ]
);
Parâmetros
filename
Nome do arquivo.
oflag
O tipo de operações permitidas.
shflag
O tipo de partilha permitido.
pmode
Configuração de permissão.
Valor de retorno
Cada uma dessas funções retorna um descritor de arquivo para o arquivo aberto.
Se filename ou oflag for um NULL ponteiro, ou se oflag estiver ou shflag não dentro de um intervalo válido de valores, o manipulador de parâmetros inválido será invocado, conforme descrito em Validação de parâmetros. Se a execução for permitida para continuar, essas funções retornarão -1 e definidas errno como um dos seguintes valores.
errno valor |
Condição |
|---|---|
EACCES |
O caminho fornecido é um diretório ou o arquivo é somente leitura, mas uma operação aberta para gravação foi tentada. |
EEXIST |
_O_CREAT e _O_EXCL bandeiras foram especificadas, mas filename já existe. |
EINVAL |
Inválido oflag ou shflag argumento. |
EMFILE |
Não estão disponíveis mais descritores de ficheiros. |
ENOENT |
O arquivo ou caminho não foi encontrado. |
Para obter mais informações sobre esses e outros códigos de retorno, consulte errno, _doserrno, _sys_errliste _sys_nerr.
Observações
A _sopen função abre o arquivo especificado por filename e prepara o arquivo para leitura ou gravação compartilhada, conforme definido por oflag e shflag.
_wsopené uma versão de caracteres largos de ; o filename argumento para _wsopen é uma cadeia de _sopencaracteres largos.
_wsopen e _sopen comportar-se de forma idêntica de outra forma.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterá-lo, consulte estado global noCRT .
Mapeamentos de rotina de texto genérico
Tchar.h rotina |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
|---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
A expressão oflag inteira é formada pela combinação de uma ou mais das seguintes constantes de manifesto, que são definidas em <fcntl.h>. Quando duas ou mais constantes formam o argumento oflag, elas são combinadas com o operador bitwise-OR ( | ).
oflag constante |
Comportamento |
|---|---|
_O_APPEND |
Move o ponteiro do arquivo para o final do arquivo antes de cada operação de gravação. |
_O_BINARY |
Abre o arquivo no modo binário (não traduzido). (Consulte fopen para obter uma descrição do modo binário.) |
_O_CREAT |
Cria um arquivo e o abre para gravação. Não tem efeito se o arquivo especificado por filename existir. O pmode argumento é necessário quando _O_CREAT é especificado. |
_O_CREAT | _O_SHORT_LIVED |
Cria um arquivo como temporário e, se possível, não é liberado para o disco. O pmode argumento é necessário quando _O_CREAT é especificado. |
_O_CREAT | _O_TEMPORARY |
Cria um arquivo como temporário; O arquivo é excluído quando o último descritor de arquivo é fechado. O pmode argumento é necessário quando _O_CREAT é especificado. Para preservar o comportamento herdado para compatibilidade de aplicativos, outros processos não são impedidos de excluir esse arquivo. |
_O_CREAT | _O_EXCL |
Retorna um valor de erro se existir um arquivo especificado por filename . Aplica-se apenas quando utilizado com _O_CREAT. |
_O_NOINHERIT |
Impede a criação de um descritor de arquivo compartilhado. |
_O_RANDOM |
Especifica que o cache é otimizado para, mas não restrito a, acesso aleatório do disco. |
_O_RDONLY |
Abre um arquivo somente para leitura. Não é possível especificar com _O_RDWR ou _O_WRONLY. |
_O_RDWR |
Abre um arquivo para leitura e gravação. Não é possível especificar com _O_RDONLY ou _O_WRONLY. |
_O_SEQUENTIAL |
Especifica que o cache é otimizado para, mas não restrito a, acesso sequencial do disco. |
_O_TEXT |
Abre um arquivo no modo de texto ANSI (traduzido). Para obter mais informações, consulte E/S de arquivo de texto e modo binário e fopen. |
_O_TRUNC |
Abre um arquivo e o trunca para comprimento zero; O arquivo deve ter permissão de gravação. Não é possível especificar com _O_RDONLY.
_O_TRUNC usado com _O_CREAT abre um arquivo existente ou cria um arquivo.
Observação: O _O_TRUNC sinalizador destrói o conteúdo do arquivo especificado. |
_O_WRONLY |
Abre um ficheiro apenas para escrita. Não é possível especificar com _O_RDONLY ou _O_RDWR. |
_O_U16TEXT |
Abre um arquivo no modo Unicode UTF-16. |
_O_U8TEXT |
Abre um arquivo no modo Unicode UTF-8. |
_O_WTEXT |
Abre um arquivo no modo Unicode. |
Para especificar o modo de acesso ao arquivo, você deve especificar _O_RDONLY, _O_RDWRou _O_WRONLY. Não há nenhum valor padrão para o modo de acesso.
Quando um arquivo é aberto no modo Unicode usando _O_WTEXT, _O_U8TEXTou _O_U16TEXT, as funções de entrada convertem os dados lidos do arquivo em dados UTF-16 armazenados como tipo wchar_t. As funções que gravam em um arquivo aberto no modo Unicode esperam buffers que contenham dados UTF-16 armazenados como tipo wchar_t. Se o arquivo for codificado como UTF-8, os dados UTF-16 serão convertidos em UTF-8 quando forem gravados. O conteúdo codificado em UTF-8 do arquivo é traduzido para UTF-16 quando é lido. Uma tentativa de ler ou gravar um número ímpar de bytes no modo Unicode causa um erro de validação de parâmetro. Para ler ou gravar dados armazenados em seu programa como UTF-8, use um modo de texto ou arquivo binário em vez de um modo Unicode. Você é responsável por qualquer tradução de codificação necessária.
Se _sopen for chamado com _O_WRONLY | _O_APPEND (modo de acréscimo) e _O_WTEXT, _O_U16TEXTou , ele _O_U8TEXTprimeiro tentar abrir o arquivo para leitura e gravação, leia a lista técnica e, em seguida, reabra-o apenas para gravação. Se a abertura do arquivo para leitura e gravação falhar, ele abrirá o arquivo somente para gravação e usará o valor padrão para a configuração do modo Unicode.
O argumento shflag é uma expressão constante que consiste em uma das seguintes constantes manifestas, que são definidas em <share.h>.
shflag constante |
Comportamento |
|---|---|
_SH_DENYRW |
Nega acesso de leitura e gravação a um arquivo. |
_SH_DENYWR |
Nega acesso de gravação a um arquivo. |
_SH_DENYRD |
Nega acesso de leitura a um arquivo. |
_SH_DENYNO |
Permite acesso de leitura e gravação. |
O pmode argumento é necessário apenas quando _O_CREAT é especificado. Se o arquivo não existir, pmode especifica as configurações de permissão do arquivo, que são definidas quando o novo arquivo é fechado pela primeira vez. Caso contrário, pmode é ignorado.
pmode é uma expressão inteira que contém uma ou ambas as constantes _S_IWRITE de manifesto e _S_IREAD, que são definidas em <sys\stat.h>. Quando ambas as constantes são dadas, elas são combinadas com o operador bitwise-OR. O significado de pmode é o seguinte.
pmode |
Significado |
|---|---|
_S_IREAD |
Só é permitida a leitura. |
_S_IWRITE |
Escrita permitida. (Com efeito, permite a leitura e a escrita.) |
_S_IREAD | _S_IWRITE |
Leitura e escrita permitidas. |
Se a permissão de gravação não for dada, o arquivo será somente leitura. No sistema operacional Windows, todos os arquivos são legíveis; Não é possível dar permissão somente gravação. Portanto, os modos _S_IWRITE e _S_IREAD | _S_IWRITE são equivalentes.
_sopen Aplica a máscara de permissão de arquivo atual a pmode antes que as permissões sejam definidas. Para obter mais informações, consulte _umask.
Requerimentos
| Função | Cabeçalho obrigatório | Cabeçalho opcional |
|---|---|---|
_sopen |
<io.h> |
<fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h> |
_wsopen |
<io.h> ou <wchar.h> |
<fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Veja o exemplo para _locking.
Ver também
E/S de baixo nível
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen