Compartilhar via


_fsopen, _wfsopen

Abre um fluxo com o compartilhamento de arquivos.

FILE *_fsopen( 
   const char *filename,
   const char *mode,
   int shflag 
);
FILE *_wfsopen( 
   const wchar_t *filename,
   const wchar_t *mode,
   int shflag 
);

Parâmetros

  • filename
    Nome do arquivo a ser aberta.

  • mode
    Tipo de acesso permitido.

  • shflag
    Tipo de compartilhar permitido.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o fluxo. Um valor nulo de ponteiro indica um erro. Se filename ou mode são NULL ou uma cadeia de caracteres vazia, essas funções invoca o manipulador inválido do parâmetro, conforme descrito em Validação do parâmetro. Se a execução puder continuar, essas funções retornarão NULL e definirão errno para EINVAL.

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

Comentários

A função de _fsopen abre o arquivo especificado por filename como um fluxo e prepara o arquivo para leitura ou gravação compartilhada subsequente, conforme definido pelo modo os argumentos de shflag . _wfsopen é uma versão de ampla caractere de _fsopen; os argumentos de filename e de mode a _wfsopen são cadeias de caracteres de ampla caractere. Caso contrário, _wfsopen e _fsopen, ao contrário, se comportam de forma idêntica.

A cadeia de caracteres mode especifica o tipo de acesso solicitado para o arquivo, conforme mostrado na seguinte tabela.

Termo

Definição

"r"

Abre para leitura. Se o arquivo não existir ou não puder ser encontrado, a chamada _fsopen falhará.

"w"

Abre um arquivo vazio para gravação. Se o arquivo determinado existir, seu conteúdo será destruído.

"a"

Abre gravando no final do arquivo (adicionar); cria o arquivo primeiro se não existir.

"r+"

Abre para leitura e gravação. (O arquivo deve existir.)

"w+"

Abre um arquivo vazio para a leitura e gravação. Se o arquivo determinado existir, seu conteúdo será destruído.

"a+"

Abre ler e anexando; cria o arquivo primeiro se não existir.

Use os tipos de "w" e de "w+" com cuidado, como podem ser destruído arquivos existentes.

Quando um arquivo é aberto com o tipo de acesso de "a" ou de "a+" , todas as operações de gravação ocorrem no final do arquivo. O ponteiro de arquivo pode ser reposicionado usando fseek ou rewind, mas sempre é movido de volta ao final do arquivo antes que qualquer operação de gravação foi executada. Portanto, os dados existentes não podem ser substituídos. Quando "r+", "w+", ou o tipo de acesso de "a+" forem especificados, a leitura e gravação são permitidas (o arquivo é aberto para atualizar). No entanto, ao alternar entre a leitura e a gravação, deve haver fsetposde intervenção, fseek, ou uma operação de rewind . A posição atual pode ser especificado para a operação de fsetpos ou de fseek , se desejado. Além dos valores acima, um dos seguintes caracteres pode ser incluído em mode para especificar o modo de conversão de linhas, e para o gerenciamento de arquivo.

Termo

Definição

t

Abre um arquivo no modo de texto traduzido (). Nesse modo, a retorno- linha combinações de retorno de carro (CR-LF) é convertida em uma alimentação de linha na entrada (LF) e os caracteres de LF são convertidos em combinações de CR-LF na saída. Além disso, CTRL+Z é interpretado como um caractere de participante de Arquivo na entrada. Em arquivos abertos leitura ou leitura/gravação, _fsopen verifica se há um CTRL+Z no final do arquivo e solte-o, se possível. Isso é feito como usar fseek e ftell para mover dentro de um arquivo que termina com um CTRL+Z pode fazer com que fseek se com comportamento de forma incorreta próximo do fim do arquivo.

b

Abre um arquivo no modo binário não traduzido (); as traduções acima são suprimida.

S

Especifica que armazenar em cache é otimizado para, mas não restrito ao acesso sequencial de disco.

R

Especifica que armazenar em cache é otimizado para, mas não restrito ao acesso aleatório de disco.

T

Especifica um arquivo como temporário. Se possível, não é transmitido ao disco.

D

Especifica um arquivo como temporário. É excluído quando o último ponteiro do arquivo é fechado.

Se t ou b não são dados em mode, o modo de conversão é definido pela variável _fmodede modo padrão. Se t ou b for prefixado para o argumento, a função falhará e retornará NULL. Para obter uma descrição dos modos de texto e binários, consulte O modo de texto e binários de E/S.

O argumento shflag é uma expressão constante consiste das seguintes constantes manifestas, definido em Share.h.

Termo

Definição

_SH_COMPAT

Define o modo de compatibilidade para aplicativos de 16 bits.

_SH_DENYNO

Permite acesso de leitura e gravação.

_SH_DENYRD

Nega o acesso de leitura ao arquivo.

_SH_DENYRW

Nega o acesso de leitura e gravação no arquivo.

_SH_DENYWR

Nega o acesso de gravação no arquivo.

Mapeamentos da rotina de texto genérico

Rotina Tchar.h

_UNICODE e _MBCS não definidos

_MBCS definido

_UNICODE definido

_tfsopen

_fsopen

_fsopen

_wfsopen

Requisitos

Função

Cabeçalho necessário

Cabeçalhos opcionais

_fsopen

<stdio.h>

<share.h>

Para a constante manifesta para o parâmetro de shflag .

_wfsopen

<stdio.h> ou <wchar.h>

<share.h>

Para a constante manifesta para o parâmetro de shflag .

Exemplo

// crt_fsopen.c

#include <stdio.h>
#include <stdlib.h>
#include <share.h>

int main( void )
{
   FILE *stream;

   // Open output file for writing. Using _fsopen allows us to
   // ensure that no one else writes to the file while we are
   // writing to it.
    //
   if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
   {
      fprintf( stream, "No one else in the network can write "
                       "to this file until we are done.\n" );
      fclose( stream );
   }
   // Now others can write to the file while we read it.
   system( "type outfile" );
}
  

Equivalência do .NET Framework

Consulte também

Referência

E/S de fluxo

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen