_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
Obtém informações sobre um arquivo em 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 em 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 retornado de – 1 indica um erro.Se o descritor de arquivo é inválido ou buffer é NULL, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, errno é conjunto para EBADF, no caso de um descritor de arquivo inválido, ou EINVAL, se buffer é NULL.
Comentários
The _fstat função obtém informações sobre o arquivo em aberto associado fd e os armazenamentos na estrutura de apontada por buffer. The _stat estrutura, definida no SYS\Stat.h, contém os seguintes campos.
st_atime
time do último acesso de arquivo.st_ctime
time de criação do arquivo.st_dev
Se um dispositivo, fd; Caso contrário, 0.st_mode
Máscara de bit para informações sobre o modo de arquivo.The _S_IFCHR bit é conjunto se fd refere-se a um dispositivo. The _S_IFREG bit é conjunto se fd refere-se a um arquivo comum. Os bits de leitura/gravar são conjunto de acordo com para o modo de permissão do arquivo._S_IFCHR e Outros constantes definidas no SYS\Stat.h.st_mtime
time 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
dimensionar do arquivo em bytes.
If fd refere-se a um dispositivo, o st_atime, st_ctime, st_mtime, e st_size campos não são significativos.
Como Stat.h usa o _dev_t tipo, que é definido em Types.h, você deve incluir Types.h antes Stat.h em seu código.
_fstat64, que usa o __stat64 estrutura, permite que as datas de criação do arquivo para ser expressa até a 23: 59: 59, 31 de dezembro de 3000, UTC; enquanto as outras funções representam apenas datas até 14: 03: 07 19 de janeiro de 2038, UTC. Meia-noite, 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 time de 32 bit ou 64 bit e tamanhos de arquivo de 32 bit ou 64 bit.O primeiro sufixo numérico (32 ou 64) indica o dimensionar do time tipo usado; o segundo sufixo é i32 ou i64, que indica se o dimensionar do arquivo é representado sistema autônomo um inteiro de 32 bit ou 64 bit.
In Visual C++ 2005, _fstat is equivalent to _fstat64i32, and struct** _stat contains a 64-bit time.This is true unless _USE_32BIT_TIME_T is defined, in which case the old behavior is in effect; _fstat uses a 32-bit time, and struct **_stat contains a 32-bit time.O mesmo vale para _fstati64.
Tipo de time e arquivo length tipo variações de _stat
Funções |
_USE_32BIT_TIME_T definido? |
Tipo de time |
Tipo de tamanho de arquivo |
---|---|---|---|
_fstat |
Não definido |
64 bit |
32 bit |
_fstat |
Definido |
32 bit |
32 bit |
_fstat32 |
Não afetada pela definição de macro |
32 bit |
32 bit |
_fstat64 |
Não afetada pela definição de macro |
64 bit |
64 bit |
_fstati64 |
Não definido |
64 bit |
64 bit |
_fstati64 |
Definido |
32 bit |
64 bit |
_fstat32i64 |
Não afetada pela definição de macro |
32 bit |
64 bit |
_fstat64i32 |
Não afetada pela definição de macro |
64 bit |
32 bit |
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 );
}
File size : 16 Time modified : Wed May 07 15:25:11 2003
Equivalente do NET Framework
Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.