Mono Class Library: Mono.Unix.Native.Syscall Overview | MembersMono.Unix.Native.Syscall.stat Method |
Get file status. [Edit]
|
On success, 0 is returned. On error, -1 is returned and Stdlib.GetLastError returns the translated error.
Usage
The stat() and lstat() system calls will fail if:
[Edit]
Error Details Errno.EACCES Search permission is denied for a component of the path prefix.
Errno.EFAULT The sb or path argument points to an invalid address.
Errno.EIO An I/O error occurred while reading from or writing to the file system.
Errno.ELOOP Too many symbolic links were encountered in translating the pathname.
Errno.ENAMETOOLONG A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters.
Errno.ENOENT The named file does not exist.
Errno.ENOTDIR A component of the path prefix is not a directory.
Errno.EOVERFLOW The file size in bytes cannot be represented correctly in the structure pointed to by sb .
The stat() system call obtains information about the file pointed to by path . Read, write or execute permission of the named file is not required, but all directories listed in the path name leading to the file must be searchable.
The sb argument is a pointer to a Vt stat structure as defined by sys/stat.h and into which information is placed concerning the file.
The fields of Vt "struct stat" related to the file system are as follows:
st_dev The numeric ID of the device containing the file.
st_ino The file's inode number.
st_nlink The number of hard links to the file.
The st_dev and st_ino fields together identify the file uniquely within the system.
The time-related fields of Vt "struct stat" are as follows:
st_atime Time when file data last accessed. Changed by the Syscall.mknod(2) , Syscall.utimes(2) , Syscall.read(2) and Syscall.readv(2) system calls.
st_mtime Time when file data last modified. Changed by the Syscall.mkdir(2) , Syscall.mkfifo(2) , Syscall.mknod(2) , Syscall.utimes(2) , Syscall.write(2) and Syscall.writev(2) system calls.
st_ctime Time when file status was last changed (inode data modification). Changed by the Syscall.chflags(2) , Syscall.chmod(2) , Syscall.chown(2) , Syscall.creat(2) , Syscall.link(2) , Syscall.mkdir(2) , Syscall.mkfifo(2) , Syscall.mknod(2) , Syscall.rename(2) , Syscall.rmdir(2) , Syscall.symlink(2) , Syscall.truncate(2) , Syscall.unlink(2) , Syscall.utimes(2) , Syscall.write(2) and Syscall.writev(2) system calls.
st_birthtime Time when the inode was created.
If _POSIX_SOURCE is not defined, the time-related fields are defined as:
Usage
#ifndef _POSIX_SOURCE
#define st_atime st_atimespec.tv_sec
#define st_mtime st_mtimespec.tv_sec
#define st_ctime st_ctimespec.tv_sec
#endif
The size-related fields of the Vt "struct stat" are as follows:
st_size The file size in bytes.
st_blksize The optimal I/O block size for the file.
st_blocks The actual number of blocks allocated for the file in 512-byte units. As short symbolic links are stored in the inode, this number may be zero.
The access-related fields of Vt "struct stat" are as follows:
st_uid The user ID of the file's owner.
st_gid The group ID of the file.
st_mode Status of the file (see below).
The status information word st_mode has the following bits:
Usage
#define S_IFMT 0170000 /* type of file */
#define S_IFIFO 0010000 /* named pipe (fifo) */
#define S_IFCHR 0020000 /* character special */
#define S_IFDIR 0040000 /* directory */
#define S_IFBLK 0060000 /* block special */
#define S_IFREG 0100000 /* regular */
#define S_IFLNK 0120000 /* symbolic link */
#define S_IFSOCK 0140000 /* socket */
#define S_IFWHT 0160000 /* whiteout */
#define S_ISUID 0004000 /* set user id on execution */
#define S_ISGID 0002000 /* set group id on execution */
#define S_ISVTX 0001000 /* save swapped text even after use */
#define S_IRUSR 0000400 /* read permission, owner */
#define S_IWUSR 0000200 /* write permission, owner */
#define S_IXUSR 0000100 /* execute/search permission, owner */
For a list of access modes, see sys/stat.h , Syscall.access(2) and Syscall.chmod(2) . The following macros are available to test whether a st_mode value passed in the m argument corresponds to a file of the specified type:
S_ISBLK()m Test for a block special file.
S_ISCHR()m Test for a character special file.
S_ISDIR()m Test for a directory.
S_ISFIFO()m Test for a pipe or FIFO special file.
S_ISLNK()m Test for a symbolic link.
S_ISREG()m Test for a regular file.
S_ISSOCK()m Test for a socket.
S_ISWHT()m Test for a whiteout.
The macros evaluate to a non-zero value if the test is true or to the value 0 if the test is false.
[Edit]
Namespace: Mono.Unix.Native
Assembly: Mono.Posix (in Mono.Posix.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0