<html lang="en">
<head>
<title>stat/fstat - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="List-of-Supported-Calls.html#List-of-Supported-Calls" title="List of Supported Calls">
<link rel="prev" href="unlink.html#unlink" title="unlink">
<link rel="next" href="gettimeofday.html#gettimeofday" title="gettimeofday">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="stat%2ffstat"></a>
<a name="stat_002ffstat"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="gettimeofday.html#gettimeofday">gettimeofday</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="unlink.html#unlink">unlink</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="List-of-Supported-Calls.html#List-of-Supported-Calls">List of Supported Calls</a>
<hr>
</div>

<h5 class="unnumberedsubsubsec">stat/fstat</h5>

<p><a name="index-fstat_002c-file_002di_002fo-system-call-2511"></a><a name="index-stat_002c-file_002di_002fo-system-call-2512"></a>
     <dl>
<dt>Synopsis:<dd>
     <pre class="smallexample">          int stat(const char *pathname, struct stat *buf);
          int fstat(int fd, struct stat *buf);
</pre>
     <br><dt>Request:<dd>&lsquo;<samp><span class="samp">Fstat,</span><var>pathnameptr</var><span class="samp">/</span><var>len</var><span class="samp">,</span><var>bufptr</var></samp>&rsquo;<br>
&lsquo;<samp><span class="samp">Ffstat,</span><var>fd</var><span class="samp">,</span><var>bufptr</var></samp>&rsquo;

     <br><dt>Return value:<dd>On success, zero is returned.  On error, -1 is returned.

     <br><dt>Errors:<dd>
          <dl>
<dt><code>EBADF</code><dd><var>fd</var> is not a valid open file.

          <br><dt><code>ENOENT</code><dd>A directory component in <var>pathname</var> does not exist or the
path is an empty string.

          <br><dt><code>ENOTDIR</code><dd>A component of the path is not a directory.

          <br><dt><code>EFAULT</code><dd><var>pathnameptr</var> is an invalid pointer value.

          <br><dt><code>EACCES</code><dd>No access to the file or the path of the file.

          <br><dt><code>ENAMETOOLONG</code><dd><var>pathname</var> was too long.

          <br><dt><code>EINTR</code><dd>The call was interrupted by the user. 
</dl>

   </dl>

   </body></html>

