_stat- und _wstat-Funktionen
Rufen Sie Statusinformationen über eine Datei ab.
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
);
Parameter
path
Zeiger auf eine Zeichenfolge, die den Pfad der vorhandenen Datei bzw. des Verzeichnisses enthält.buffer
So strukturieren Zeiger, dass Speicher entsteht.
Rückgabewert
Jede dieser Funktionen gibt 0 zurück, wenn die DateiStatusinformationen abgerufen. Bei dem Rückgabewert von 1 angibt einem Fehler, in diesem Fall errno auf ENOENT festgelegt wird und angibt, ob der Dateiname oder Pfad, nicht gefunden werden konnte. Bei dem Rückgabewert EINVAL gibt ein ungültiges Parameter an; errno wird auch in diesem Fall auf EINVAL festgelegt.
Hinweis
Wenn path die Position eines Verzeichnisses enthält, kann es über einen nachgestellten umgekehrten Schrägstrich enthalten.Wenn dies der Fall ist, wird -1 zurückgegeben und errno ist auf ENOENT festgelegt.
Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Der Datumsstempel einer Datei kann dargestellt werden, wenn er später als Mitternacht, am 1. Januar 1970 und vor 23:59 ist: 59 am 31. Dezember 3000, UTC, es sei denn, Sie _stat32 oder _wstat32 verwenden, oder weisen _USE_32BIT_TIME_T definiert, in diesem Fall das Datum nur bis 03:14 dargestellt werden kann: Am 7. Januar 19 2038, UTC.
Hinweise
Die _stat-Funktion ruft Informationen über die Datei oder das Verzeichnis ein, die von path angegeben wird und speichert sie in der Struktur, die auf den durch buffer gezeigt wird. _stat behandelt automatisch Mehrbyte-Zeichenfolgen-Argumente entsprechend und derzeit erkennt Mehrbytezeichensequenzen entsprechend der Mehrbyte-Codepage.
_wstat ist eine Breitzeichenversion von _stat. Das path-Argument für _wstat ist eine Breitzeichenfolge. _wstat und _stat identisch verhalten sich, dass _wstat nicht behandelt Mehrbyte-Zeichenfolgen.
Variationen dieser -or-64-Bit-Zeittypen der Funktionsunterstützungs 32 und 32 -or-64-Bit-Dateilängen. Das erste numerische Suffix (32 oder 64) gibt die Größe des verwendeten Zeittyps an; das zweite Suffix ist entweder i32 oder i64 angibt, ob die Dateigröße als 32-Bit- oder 64-Bit-ganzeZahl dargestellt wird.
_stat entspricht _stat64i32, struct und _stat enthält eine 64-Bit-Zeit. Dies gilt, es sei denn, _USE_32BIT_TIME_T definiert wird, in diesem Fall das alte Verhalten gültig ist; _stat verwendet eine 32-Bit-Zeit, struct und _stat enthält eine 32-Bit-Zeit. Das gilt für _stati64 erfüllt.
Hinweis
_wstat funktioniert nicht mit symbolischen Links Windows Vista.In diesen Fällen gibt _wstat immer über eine Größe von 0._stat funktioniert ordnungsgemäß mit symbolischen Links.
Diese Funktion überprüft ihre Parameter. Wenn entweder path oder bufferNULL ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben.
Die Zeit Typs fest und fügen Sie Längen-Typ-Variationen von _stat
Funktionen |
_USE_32BIT_TIME_T definiert? |
Zeittyp |
Dateilängentyp |
---|---|---|---|
_stat, _wstat |
Nicht definiert |
64 Bit |
32 Bit |
_stat, _wstat |
Definiert |
32 Bit |
32 Bit |
_stat32, _wstat32 |
Beeinflusst weder von der Makrodefinition |
32 Bit |
32 Bit |
_stat64, _wstat64 |
Beeinflusst weder von der Makrodefinition |
64 Bit |
64 Bit |
_stati64, _wstati64 |
Nicht definiert |
64 Bit |
64 Bit |
_stati64, _wstati64 |
Definiert |
32 Bit |
64 Bit |
_stat32i64, _wstat32i64 |
Beeinflusst weder von der Makrodefinition |
32 Bit |
64 Bit |
_stat64i32, _wstat64i32 |
Beeinflusst weder von der Makrodefinition |
64 Bit |
32 Bit |
Zuordnung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
Die _stat-Struktur, die in SYS\STAT.H, enthält die folgenden Felder.
st_gid
Numerischer Bezeichner der Gruppe, die die Datei (UNIX-Besonderen) dieses Feld besitzt, ist immer auf Windows-Systemen null. Eine neu zugewiesene Datei wird als Windows-Datei klassifiziert.st_atime
Zeit des letzten Zugriffs der Datei. Gültig auf NTFS jedoch nicht auf FAT formatierte Laufwerke.st_ctime
Zeitpunkt der Erstellung der Datei. Gültig auf NTFS jedoch nicht auf FAT formatierte Laufwerke.st_dev
Laufwerknummer 5-Datenträgerkonfiguration, der die Datei (entspricht st_rdev) enthält.st_ino
Nummer des Informationsknotens ( inode) für die Datei (UNIX-Besondere). Klicken Sie UNIX-Dateisystemen beschreibt inode das Datums- und -Zeitstempel, Berechtigungen und Inhalt. Wenn Dateien beieinander hart-verknüpft werden, geben sie gleichen inode. inode und st_ino, verfügt über keine Bedeutung im FAT, im HPFS oder in den NTFS-Dateisystemen.st_mode
Bitmaske zu Dateimodusinformation. Das _S_IFDIR Ausführungsbits wird festgelegt, wenn path angibt; einem Verzeichnis das Bit _S_IFREG wird festgelegt, wenn path einer normalen Datei oder einem Gerät angibt. Benutzerlese-schreibbits werden entsprechend dem Berechtigungsmodus der Datei festgelegt; Benutzer führen Bits festgelegt werden entsprechend der Dateinamenerweiterung aus.st_mtime
Zeitpunkt der letzten Änderung der Datei.st_nlink
Immer 1 auf NichtNTFS Dateisystemen.st_rdev
Laufwerknummer 5-Datenträgerkonfiguration, der die Datei (entspricht st_dev) enthält.st_size
Größe einer Datei in Bytes; eine 64-Bit-Ganzzahl für Variationen mit dem Suffix i64**.**st_uid
Numerischer Bezeichner des Benutzers, der Datei (UNIX-Besonderen) besitzt. Dieses Feld ist immer auf Windows-Systemen null. Eine neu zugewiesene Datei wird als Windows-Datei klassifiziert.
Wenn path ein Objekt verweist, sind st_size, die verschiedenen Zeitfeldern, st_dev und die st_rdev Felder in der _stat-Struktur keine Bedeutung. Da STAT.H den _dev_t-Typs, der in TYPES.H definiert ist, müssen Sie TYPES.H vor STAT.H im Code.
Anforderungen
Routine |
Erforderlicher Header |
Optionale Header |
---|---|---|
_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32 |
<sys/types.h gefolgt> von sys </stat.h> |
<errno.h> |
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32 |
<sys/types.h gefolgt> von sys </stat.h oder wchar.h> <> |
<errno.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// 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 );
}
}
.NET Framework-Entsprechung
Siehe auch
Referenz
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32