stat(), stat64()
QNX SDP8.0C Library ReferenceAPIDeveloper
Get information about a file or directory, given a path
Synopsis:
#include <sys/stat.h>
int stat( const char * path,
struct stat * buf );
int stat64( const char * path,
struct stat64 * buf );
Arguments:
- path
- The path of the file or directory that you want information about.
- buf
- A pointer to a struct stat or struct stat64 buffer where the function can store the information.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The stat() and stat64() functions obtain information about the file or directory referenced in path. This information is placed in the structure located at the address indicated by buf. The stat64() function is a large-file support version of stat().
Note:
The large-file support functions and data types appear in the name space only if you define
_LARGEFILE64_SOURCE when you compile your code. For more information, see
Classificationin What's in a Function Description?
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- EACCES
- Search permission is denied for a component of path.
- EAGAIN
- The function is temporarily unavailable. Try again.
- EINTR
- This function was interrupted by a signal.
- EINVAL
- The function was unable to convert the format of the stat structure received from the resource manager to _STAT_FORM_PREFERRED; see stat_convert_form().
- EIO
- A physical error occurred on the block device.
- ELOOP
- Too many levels of symbolic links or prefixes.
- ENAMETOOLONG
- The argument path exceeds PATH_MAX in length, or a pathname component is longer than NAME_MAX. These manifests are defined in the <limits.h> header file.
- ENOENT
- The named file doesn't exist, or path is an empty string.
- ENOMEM
- Not enough memory is available.
- ENOSYS
- The stat() function isn't implemented for the filesystem underlying the path specified in path.
- ENOTDIR
- A component of path isn't a directory.
- EOVERFLOW
- The file size in bytes or the number of blocks allocated to the file or the file serial number can't be represented correctly in the structure pointed to by buf.
- ESRCH (procfs only)
- There is no running process that corresponds to /proc/pid.
Examples:
Determine the size of a file:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
int main( void )
{
struct stat buf;
if( stat( "file", &buf ) != -1 ) {
printf( "File size = %d\n", buf.st_size );
}
return EXIT_SUCCESS;
}
Determine the amount of free memory:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
int main () {
struct stat buf;
if ( stat( "/proc", &buf ) == -1) {
perror ("stat" );
return EXIT_FAILURE;
} else {
printf ("Free memory: %d bytes\n", buf.st_size);
return EXIT_SUCCESS;
}
}
Classification:
stat() is POSIX 1003.1; stat64() is Large-file support
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Page updated: