summaryrefslogtreecommitdiff
path: root/reference/C/FUNCTIONS/stat.html
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/FUNCTIONS/stat.html')
-rw-r--r--reference/C/FUNCTIONS/stat.html124
1 files changed, 124 insertions, 0 deletions
diff --git a/reference/C/FUNCTIONS/stat.html b/reference/C/FUNCTIONS/stat.html
new file mode 100644
index 0000000..601aeaa
--- /dev/null
+++ b/reference/C/FUNCTIONS/stat.html
@@ -0,0 +1,124 @@
+<title>stat/fstat/lstat functions.</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor=#ffffcc>
+<hr>
+<center>
+<h1>stat/fstat/lstat functions.</h1>
+</center>
+<hr>
+<p>
+
+All three functions return information about a file. Please note
+that devices are seen as files to Unix, so you could 'stat' things
+like /dev/mouse to see when the mouse was last moved.<p>
+
+<b>stat</b> return the status of a file.<p>
+
+<b>fstat</b> stats an open file.<p>
+
+<b>lstat</b> reports on a link, not the file it points too.<p>
+<pre>
+Libraries: sys/stat.h
+ unistd.h
+
+Syntax: struct stat stat_p;
+ stat ("martin", &stat_p);
+
+Stat Structure:
+
+ struct stat
+ {
+ dev_t st_dev; /* device */
+ ino_t st_ino; /* inode */
+ umode_t st_mode; /* protection */
+ nlink_t st_nlink; /* number of hard links */
+ uid_t st_uid; /* user ID of owner */
+ gid_t st_gid; /* group ID of owner */
+ dev_t st_rdev; /* device type (if inode device) */
+ off_t st_size; /* total size, in bytes */
+ unsigned long st_blksize; /* blocksize for filesystem I/O */
+ unsigned long st_blocks; /* number of blocks allocated */
+ time_t st_atime; /* time of last access */
+ time_t st_mtime; /* time of last modification */
+ time_t st_ctime; /* time of last change */
+ };
+
+</pre>
+
+<b>st_mode</b> can be used with the following macros to discover the
+type of file being statted.
+
+<a name=filetype>
+<pre>
+ S_ISLNK(st_mode) is it a symbolic link
+
+ S_ISREG(st_mode) regular file
+
+ S_ISDIR(st_mode) directory
+
+ S_ISCHR(st_mode) character device
+
+ S_ISBLK(st_mode) block device
+
+ S_ISFIFO(st_mode) fifo
+
+ S_ISSOCK(st_mode) socket
+</pre>
+
+These functions return a large amount of information. See the man page
+(below) for details. You will need to understand
+<a href="../SYNTAX/struct.html">structures</a> to work with stat.<p>
+
+<img src=../../GRAPHICS/man.gif>
+<a href="../MAN/stat.htm">
+man page to provide all the details.</a>
+<p>
+<hr>
+<h2>Examples</h2>
+<img src=../../GRAPHICS/computer.gif>
+<a href="../EXAMPLES/stat.c">
+example program.</a>
+<p>
+<hr>
+<h2>See also:</h2>
+<img src=../../GRAPHICS/whiteball.gif>
+<a href=directory.html>POSIX functions to read directory information.</a>
+<p>
+<hr>
+<h2>Note</h2>
+I have seen a problem with the 'access time', it only seems to get updated
+if the file system is local. If the filesystem is NFS mounted and
+accessed via 'cat' or 'head' the access date is not updated.
+
+
+<p>
+
+<hr>
+<p>
+<center>
+<table border=2 width="80%" bgcolor="ivory">
+<tr align=center>
+<td width="25%">
+<a href="../cref.html"> Top</a>
+</td><td width="25%">
+<a href="../master_index.html"> Master Index</a>
+</td><td width="25%">
+<a href="../SYNTAX/keywords.html"> Keywords</a>
+</td><td width="25%">
+<a href="funcref.htm"> Functions</a>
+</td>
+</tr>
+</table>
+</center>
+<p>
+<hr>
+<address>Martin Leslie
+</address><p>
+</body>
+</html>
+