Compartilhar via


_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

Obtém informações sobre um arquivo aberto.

int _fstat( 
   int fd,
   struct _stat *buffer 
);
int _fstat32( 
   int fd,
   struct __stat32 *buffer 
);
int _fstat64( 
   int fd,
   struct __stat64 *buffer 
);
int _fstati64( 
   int fd,
   struct _stati64 *buffer 
);
int _fstat32i64( 
   int fd,
   struct _stat32i64 *buffer 
);
int _fstat64i32( 
   int fd,
   struct _stat64i32 *buffer 
);

Parâmetros

  • fd
    Descritor de arquivo do arquivo aberto.

  • buffer
    Ponteiro para a estrutura para armazenar os resultados.

Valor de retorno

Retorna 0 se as informações de status do arquivo são obtidas.Um valor de retorno de – 1 indica um erro.Se o descritor de arquivo é inválido ou buffer é NULL, 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 EBADF, no caso de um descritor de arquivo inválido ou para EINVAL, se buffer é NULL.

Comentários

O _fstat função obtém informações sobre o arquivo aberto associado a fd e o armazena na estrutura apontada por buffer.O _stat estrutura, definida em SYS\Stat.h, contém os seguintes campos.

  • st_atime
    Hora do último acesso de arquivo.

  • st_ctime
    Hora da criação do arquivo.

  • st_dev
    Se um dispositivo, fd; Caso contrário, 0.

  • st_mode
    Máscara de bits para informações sobre o modo de arquivo.O _S_IFCHR bit será definido se fd refere-se a um dispositivo.O _S_IFREG bit será definido se fd se refere a um arquivo comum.Os bits de leitura/gravação são definidos de acordo com para o modo de permissão do arquivo._S_IFCHRe outras constantes são definidos em SYS\Stat.h.

  • st_mtime
    Hora da última modificação do arquivo.

  • st_nlink
    Sempre 1 em sistemas de arquivos não-NTFS.

  • st_rdev
    Se um dispositivo, fd; Caso contrário, 0.

  • st_size
    Tamanho do arquivo em bytes.

Se fd refere-se a um dispositivo, o st_atime, st_ctime, st_mtime, e st_size campos não são significativos.

Como o Stat.h usa o _dev_t digite, que é definido em Types.h, você deve incluir Types.h antes de Stat.h em seu código.

_fstat64, que usa a __stat64 estruturar, permite que as datas de criação do arquivo a ser expressa até por meio de 23: 59: 59, 31 de dezembro de 3000, UTC; enquanto as outras funções apenas representam datas até 03: 14: 07 em 19 de janeiro de 2038, UTC.Meia-noite, de 1º de janeiro de 1970, é o limite inferior do intervalo de datas para todas essas funções.

Variações dessas funções oferecem suporte a tipos de tempo de 32 bits ou 64 bits e tamanhos de arquivo de 32 bits ou 64 bits.O primeiro sufixo numérico (32 ou 64) indica o tamanho do tipo tempo usado; o segundo sufixo é i32 ou i64, indicando se o tamanho do arquivo é representado como um inteiro de 32 bits ou 64 bits.

_fstaté equivalente a _fstat64i32, e struct_stat contém a hora de 64 bits.Isso é verdadeiro, a menos que _USE_32BIT_TIME_T for definida, caso em que o comportamento antigo está em vigor; _fstatusa um tempo de 32 bits, e struct_stat contém a hora de 32 bits.O mesmo vale para _fstati64.

Tipo de tempo e variações de tipo de tamanho de arquivo de _stat

Funções

_USE_32BIT_TIME_T definido?

Tipo de tempo

Tipo de tamanho de arquivo

_fstat

Não definido

64 bits

32 bits

_fstat

Definido

32 bits

32 bits

_fstat32

Não é afetada pela definição de macro

32 bits

32 bits

_fstat64

Não é afetada pela definição de macro

64 bits

64 bits

_fstati64

Não definido

64 bits

64 bits

_fstati64

Definido

32 bits

64 bits

_fstat32i64

Não é afetada pela definição de macro

32 bits

64 bits

_fstat64i32

Não é afetada pela definição de macro

64 bits

32 bits

Requisitos

Função

Cabeçalho necessário

_fstat

<sys/stat.h> e <sys/types.h>

_fstat32

<sys/stat.h> e <sys/types.h>

_fstat64

<sys/stat.h> e <sys/types.h>

_fstati64

<sys/stat.h> e <sys/types.h>

_fstat32i64

<sys/stat.h> e <sys/types.h>

_fstat64i32

<sys/stat.h> e <sys/types.h>

Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.

Exemplo

// crt_fstat.c
// This program uses _fstat to report
// the size of a file named F_STAT.OUT.
 

#include <io.h>
#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <share.h>

int main( void )
{
   struct _stat buf;
   int fd, result;
   char buffer[] = "A line to output";
   char timebuf[26];
   errno_t err;

   _sopen_s( &fd,
             "f_stat.out",
             _O_CREAT | _O_WRONLY | _O_TRUNC,
             _SH_DENYNO,
             _S_IREAD | _S_IWRITE );
   if( fd != -1 )
      _write( fd, buffer, strlen( buffer ) );

   // Get data associated with "fd": 
   result = _fstat( fd, &buf );

   // Check if statistics are valid: 
   if( result != 0 )
   {
      if (errno == EBADF)
        printf( "Bad file descriptor.\n" );
      else if (errno == EINVAL)
        printf( "Invalid argument to _fstat.\n" );
   }
   else
   {
      printf( "File size     : %ld\n", buf.st_size );
      err = ctime_s(timebuf, 26, &buf.st_mtime);
      if (err)
      {
         printf("Invalid argument to ctime_s.");
         exit(1);
      }
      printf( "Time modified : %s", timebuf );
   }
   _close( fd );
}
  

Equivalência do .NET Framework

Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Manipulação de arquivos

_access, _waccess

_chmod, _wchmod

_filelength, _filelengthi64

_stat, _wstat funções