Mono.Unix.Native.Syscall.stat Method
Get file status.

Syntax

public static int stat (string file_name, out Stat buf)

See Also

Syscall.access
Syscall.chmod
Syscall.chown
Syscall.utimes

Parameters

file_name
Documentation for this section has not yet been entered.
buf
Documentation for this section has not yet been entered.

Returns

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:

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 .

Remarks

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.

Requirements

Namespace: Mono.Unix.Native
Assembly: Mono.Posix (in Mono.Posix.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0