_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, _fstat64i32
Obtém informações sobre um arquivo aberto.
Sintaxe
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 resultados.
Valor retornado
Retornará 0 se as informações de status do arquivo forem obtidas. Um valor retornado de -1 indica que há um erro. Se o descritor do arquivo for inválido ou buffer
for NULL
, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, errno
será definido como EBADF
no caso de um descritor de arquivo inválido, ou como EINVAL
se buffer
for NULL
.
Comentários
A função _fstat
obtém informações sobre o arquivo aberto associado ao fd
e as armazena na estrutura apontada por buffer
. A estrutura _stat
, definida em SYS\Stat.h
, contém os campos a seguir.
Campo | Significado |
---|---|
st_atime |
Hora do último acesso ao arquivo. |
st_ctime |
Hora da criação do arquivo. |
st_dev |
Se for um dispositivo, fd ; caso contrário, 0. |
st_mode |
Máscara de bits para informações sobre o modo de arquivo. O bit _S_IFCHR será definido se fd se referir a um dispositivo. O bit _S_IFREG será definido se fd se referir a um arquivo comum. Os bits de leitura/gravação são definidos de acordo com o modo de permissão do arquivo. _S_IFCHR e outras constantes são definidas no SYS\Stat.h . |
st_mtime |
Hora da última modificação do arquivo. |
st_nlink |
Sempre 1 em sistemas de arquivos diferentes de NTFS. |
st_rdev |
Se for um dispositivo, fd ; caso contrário, 0. |
st_size |
Tamanho do arquivo em bytes. |
Se fd
se referir a um dispositivo, os campos st_atime
, st_ctime
, st_mtime
e st_size
não serão significativos.
Como Stat.h
usa o tipo _dev_t
que é definido em Types.h
, você precisa incluir Types.h
antes de Stat.h
no código.
_fstat64
, que usa a estrutura _stat64
, permite que as datas de criação de arquivos sejam expressas até 23:59:59 de 31 de dezembro de 3000, no UTC, enquanto as outras funções representam apenas datas até 23:59:59 de 18 de janeiro de 2038, no 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 dão suporte a tipos de hora de 32 ou de 64 bits e a comprimentos de arquivo de 32 ou de 64 bits. O primeiro sufixo numérico (32
ou 64
) indica o tamanho do tipo de hora usado; o segundo sufixo é i32
ou i64
, que indica se o tamanho do arquivo é representado como um inteiro de 32 ou de 64 bits.
A menos que _USE_32BIT_TIME_T
seja definido, _fstat
é equivalente a _fstat64i32
e _stat
contém uma hora de 64 bits. Quando _USE_32BIT_TIME_T
é definido, _fstat
usa uma hora de 32 bits e _stat
contém uma hora de 32 bits. O mesmo vale para _fstati64
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Variações de tipo de hora e de tipo de tamanho de arquivo de _stat
Funções | _USE_32BIT_TIME_T definido? |
Tipo de hora | Tipo de tamanho de arquivo |
---|---|---|---|
_fstat |
Não definido | 64 bits | 32 bits |
_fstat |
Definido | 32 bits | 32 bits |
_fstat32 |
Não afetado pela definição de macro | 32 bits | 32 bits |
_fstat64 |
Não afetado 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 afetado pela definição de macro | 32 bits | 64 bits |
_fstat64i32 |
Não afetado 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 informações sobre compatibilidade, consulte Compatibilidade.
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
Confira também
Manipulação de arquivos
_access
, _waccess
_chmod
, _wchmod
_filelength
, _filelengthi64
_stat
, _wstat
funções