Compartilhar via


_fsopen, _wfsopen

Abre um fluxo com 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 para em aberto.

  • mode
    Tipo de acesso permitido.

  • shflag
    Tipo de compartilhamento permitido.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o fluxo.Um valor de ponteiro nulo indica um erro.Se filename ou mode é NULL ou uma seqüência vazia, essas funções chamar o manipulador deparâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução terá permissão para continuar, essas funções retornam NULL e defina errno para EINVAL.

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

Comentários

O _fsopen função abre o arquivo especificado por filename como um fluxo e prepara o arquivo para leitura compartilhada subseqüente ou escrita, conforme definido pelo modo e shflag argumentos. _wfsopené uma versão de caractere largo de _fsopen; o filename e mode argumentos para _wfsopen são seqüências de caracteres largos._wfsopene _fsopen tenham comportamento idêntico caso contrário.

A seqüência de caracteres mode Especifica o tipo de acesso solicitado para o arquivo, conforme mostrado na tabela a seguir.

Termo

Definição

"r"

É aberto para leitura.Se o arquivo não existe ou não for encontrado, o _fsopen falha de chamada.

"w"

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

"a"

É aberto para gravação no final do arquivo (acrescentar); cria o arquivo pela primeira vez, se não existir.

"r+"

Será aberto para leitura e gravação.(O arquivo deve existir).

"w+"

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

"a+"

É aberto para leitura e acrescentando; cria o arquivo pela primeira vez, se não existir.

Use o "w" e "w+" tipos com cuidado, pois eles podem destruir os arquivos existentes.

Quando um arquivo é aberto com o "a" ou "a+" acessar o tipo, todas as gravação operações ocorrem ao final do arquivo.O ponteiro do arquivo pode ser reposicionado usando fseek ou rewind, mas é sempre retornado para o final do arquivo antes de qualquer gravação a operação é realizada.Assim, os dados existentes não podem ser substituídos.Quando o "r+", "w+", ou "a+" tipo de acesso é especificado, a leitura e gravação são permitidos (o arquivo é considerado em aberto para atualização).No entanto, ao alternar entre a leitura e gravação, deve haver um interveniente fsetpos, fseek, ou Retroceder operação.A posição atual pode ser especificada para o fsetpos ou fseek operação, se desejado.Com os valores acima, um dos seguintes caracteres pode ser incluído em mode para especificar o modo de tradução para novas linhas e para o gerenciamento de arquivos.

Termo

Definição

t

Abre um arquivo em modo de texto (traduzido).Nesse modo, combinações de alimentação (CR-LF) do carro return–linha são convertidas em feeds de única linha (LF) na entrada e 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 final de arquivo na entrada.Em arquivos abertos para leitura ou leitura/gravação, _fsopen verifica um CTRL + Z no final do arquivo e remove-lo, se possível.Isso é feito porque usando fseek e ftell para mover-se dentro de um arquivo que termina com um CTRL + Z pode causar fseek se comporte incorretamente próximo ao final do arquivo.

b

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

S

Especifica que o cache é otimizado para, mas não restrito para acesso seqüencial do disco.

R

Especifica que o cache é otimizado para, mas não restrito para acesso aleatório do disco.

T

Especifica um arquivo como temporário.Se possível, ele não seja liberado para o disco.

D

Especifica um arquivo como temporário.Ela é excluída quando o último ponteiro de arquivo é fechado.

Se t ou b não for fornecido em mode, o modo de tradução é definido pela variávelde modo padrão**_fmode**. Se t ou b tem o prefixo para o argumento, a falha da função e retorna NULL.Para uma discussão sobre os modos de texto e binário , consulte texto e binário e/S de arquivos de modo.

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

Termo

Definição

_SH_COMPAT

Define o modo de compatibilidade para aplicativos de 16 bits.

_SH_DENYNO

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

_SH_DENYRD

Nega o acesso de leitura para o arquivo.

_SH_DENYRW

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

_SH_DENYWR

Nega o acesso de gravação ao arquivo.

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

_tfsopen

_fsopen

_fsopen

_wfsopen

Requisitos

Função

Necessário cabeçalho

Cabeçalhos opcionais

_fsopen

<stdio.h>

<share.h>

Constante de manifesto para shflag parâmetro.

_wfsopen

<stdio.h> ou <wchar.h>

<share.h>

Constante de manifesto para shflag parâmetro.

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

Fluxo de i/O

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

Open, _wopen

_setmode

_sopen, _wsopen