Compartilhar via


Funções _stat, _wstat

Obter informações de status em um arquivo.

int _stat(
   const char *path,
   struct _stat *buffer 
);
int _stat32(
   const char *path,
   struct __stat32 *buffer 
);
int _stat64(
   const char *path,
   struct __stat64 *buffer 
);
int _stati64(
   const char *path,
   struct _stati64 *buffer 
);
int _stat32i64(str
   const char *path,
   struct _stat32i64 *buffer 
);
int _stat64i32(str
   const char *path,
   struct _stat64i32 *buffer 
);
int _wstat(
   const wchar_t *path,
   struct _stat *buffer 
);
int _wstat32(
   const wchar_t *path,
   struct __stat32 *buffer 
);
int _wstat64(
   const wchar_t *path,
   struct __stat64 *buffer 
);
int _wstati64(
   const wchar_t *path,
   struct _stati64 *buffer 
);
int _wstat32i64(
   const wchar_t *path,
   struct _stat32i64 *buffer 
);
int _wstat64i32(
   const wchar_t *path,
   struct _stat64i32 *buffer 
);

Parâmetros

  • path
    Ponteiro para uma cadeia de caracteres que contém o caminho do arquivo existente ou diretório.

  • buffer
    Ponteiro para a estrutura que armazena o resultado.

Valor de retorno

Cada uma dessas funções retornará 0 se as informações de status arquivo é obtida. Um valor de retorno – 1 indica um erro, caso em que errno é definido como ENOENT, indicar que o nome de arquivo ou o caminho não poderiam ser encontradas. Um valor de retorno EINVAL indica um parâmetro inválido; errno também é definido como EINVAL nesse caso.

Dica

Se path contém o local de um diretório, não pode conter uma barra invertida à direita.Em caso afirmativo, -1 será retornado e errno será definido como ENOENT.

Consulte _doserrno, errno, _sys_errlist, e _sys_nerr para obter mais informações sobre esse, e outras, códigos de retorno.

O carimbo de data em um arquivo pode ser representado se é posterior à meia-noite, o 1º de janeiro de 1970, e antes de 23:59: o 31 de dezembro, 59, 3000, UTC, a menos que você use _stat32 ou _wstat32, ou definida _USE_32BIT_TIME_Tnesse caso, a data pode ser representada apenas até o 03:14: 7 de janeiro de 19, 2038, UTC.

Comentários

A função de _stat obtém informações sobre o arquivo ou diretório especificado por path e armazená-las na estrutura apontada por buffer. _stat controla automaticamente argumentos de cadeia de caracteres de multibyte- caracteres conforme apropriado, confirmando sequências de multibyte- caractere de acordo com a página de código de multibyte atualmente em uso.

_wstat é uma versão de caractere longo de _stat; o argumento path para _wstat é uma cadeia de caractere longo. _wstat e _stat se comportam idêntica exceto que _wstat não trata as cadeias de caracteres de multibyte- caractere.

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

_stat é equivalente a _stat64i32, e struct_stat contém um horário de 64 bits. Isso é verdadeiro _USE_32BIT_TIME_T a menos que seja definido nesse caso, o comportamento anterior é aplicado; _stat usa um horário de 32 bits, e struct_stat contém um horário de 32 bits. O mesmo é válido para _stati64.

Dica

_wstat não funciona com links simbólicos de Windows Vista .Nesses casos, _wstat relatará sempre um tamanho de arquivo do 0._stat funciona corretamente com links simbólicos.

Essa função valida seus parâmetros. Se path ou buffer são NULL, o manipulador inválido do parâmetro será chamado, conforme descrito em Validação do parâmetro.

Hora em que o tipo e arquiva variações do tipo de comprimento de _stat

Funções

_USE_32BIT_TIME_T definido?

Tipo de tempo

Tipo de tamanho de Arquivo

_stat, _wstat

Não definido

64 bits

32 bits

_stat, _wstat

Definido

32 bits

32 bits

_stat32, _wstat32

Não afetado pela definição macro

32 bits

32 bits

_stat64, _wstat64

Não afetado pela definição macro

64 bits

64 bits

_stati64, _wstati64

Não definido

64 bits

64 bits

_stati64, _wstati64

Definido

32 bits

64 bits

_stat32i64, _wstat32i64

Não afetado pela definição macro

32 bits

64 bits

_stat64i32, _wstat64i32

Não afetado pela definição macro

64 bits

32 bits

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tstat

_stat

_stat

_wstat

_tstat64

_stat64

_stat64

_wstat64

_tstati64

_stati64

_stati64

_wstati64

_tstat32i64

_stat32i64

_stat32i64

_wstat32i64

_tstat64i32

_stat64i32

_stat64i32

_wstat64i32

A estrutura de _stat , definida no sistema \ STAT.H, o inclui os seguintes campos.

  • st_gid
    O identificador numérico do grupo que possui o arquivo (Unix- específico) esse campo sempre será zero em sistemas do windows. Um arquivo redirecionado será classificado como o arquivo.

  • st_atime
    Hora de acesso mais recente do arquivo. Válido em NTFS mas não em FAT formatou unidades de disco.

  • st_ctime
    Hora de criação do arquivo. Válido em NTFS mas não em FAT formatou unidades de disco.

  • st_dev
    Número de unidade de disco que contém o arquivo (mesmo que st_rdev).

  • st_ino
    Número de nós de informações ( inode) para o arquivo (Unix- específico). Em sistemas de arquivos de O, inode descreve a data e os carimbos de data/hora do arquivo, permissões, e conteúdo. Quando os arquivos duro- estão vinculados a outro, compartilham o mesmo inode. inodee, consequentemente st_ino, não têm nenhum significado em FAT, em HPFS, ou em sistemas de arquivos NTFS.

  • st_mode
    Máscara de bits para obter informações sobre o modo de arquivo. O bit de _S_IFDIR é definido como se path especifica um diretório; o bit de _S_IFREG é definido como se path especifica um arquivo comum ou dispositivo. Os bits de leitura/gravação do usuário é definido de acordo com o modo de permissões do arquivo; o usuário executa bit é definido de acordo com a extensão de nome de arquivo.

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

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

  • st_rdev
    Número de unidade de disco que contém o arquivo (mesmo que st_dev).

  • st_size
    Tamanho do arquivo em bytes; um inteiro de 64 bits para variações com o sufixo**.**de i64

  • st_uid
    Identificador numérico do usuário que possui o arquivo (Unix- específico). Esse campo sempre será zero em sistemas do windows. Um arquivo redirecionado será classificado como o arquivo.

Se path se refere a um dispositivo, st_size, mais tempo, coloca st_dev, e os campos de st_rdev na estrutura de _stat não tem sentido. Como STAT.H usa o tipo de _dev_t que é definido em TYPES.H, você deve incluir TYPES.H antes de STAT.H em seu código.

Requisitos

Rotina

Cabeçalho necessário

Cabeçalhos opcionais

_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32

<o sistema/types.h seguido> pelo <sistema/stat.h>

<errno.h>

_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

<o sistema/types.h seguido> pelo sistema </stat.h ou por wchar.h> <>

<errno.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

Exemplo

// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
 
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>

int main( void )
{
   struct _stat buf;
   int result;
   char timebuf[26];
   char* filename = "crt_stat.c";
   errno_t err;

   // Get data associated with "crt_stat.c": 
   result = _stat( filename, &buf );

   // Check if statistics are valid: 
   if( result != 0 )
   {
      perror( "Problem getting information" );
      switch (errno)
      {
         case ENOENT:
           printf("File %s not found.\n", filename);
           break;
         case EINVAL:
           printf("Invalid parameter to _stat.\n");
           break;
         default:
           /* Should never be reached. */
           printf("Unexpected error in _stat.\n");
      }
   }
   else
   {
      // Output some of the statistics: 
      printf( "File size     : %ld\n", buf.st_size );
      printf( "Drive         : %c:\n", buf.st_dev + 'A' );
      err = ctime_s(timebuf, 26, &buf.st_mtime);
      if (err)
      {
         printf("Invalid arguments to ctime_s.");
         exit(1);
      }
      printf( "Time modified : %s", timebuf );
   }
}
  

Equivalência do .NET Framework

Consulte também

Referência

Manipulação de arquivos

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp