<html>
<head>
<link rel=stylesheet type="text/css" href="style.css" title="style">
<title>
The Linux man-pages project
</title>
</head>

<body>

<!--BEGIN-LINKS-->
<form method="get" action="http://www.google.com/search">
<table border=0 cellpadding=0 cellspacing=0 width="100%">
<tr>
<td align="left">
<font size="-1">

Linux <em>man-pages</em>: &nbsp;
home | 
<a href="./contributing.html">contributing</a> | 
<a href="./reporting_bugs.html">bugs</a> | 
<a href="./patches.html">patches</a> | 
<a href="./download.html">download</a> &nbsp; || &nbsp; 
<a href="http://man7.org/linux/man-pages/index.html">online pages</a></font>
</td>
<td align="right">
<input type="text" name="q" size=10 maxlength=255 value="">
<input type="hidden" name="sitesearch" value="man7.org/linux/man-pages">
<input type="submit" name="sa" value="Search online pages">
</td>
</tr>
</table>
</form>
<!--END-LINKS-->

<h1>The Linux <em>man-pages</em> project</h1>

<p>
    The Linux <em>man-pages</em> project documents the
    <a href="http://en.wikipedia.org/wiki/Linux">Linux</a>
    <a href="http://www.kernel.org/pub/linux/kernel">kernel</a>
    and C library interfaces that are employed by user-space programs.
    With respect to the C library, the primary focus is the
    <a href="http://www.gnu.org">GNU</a> C library
    (<a href="http://www.gnu.org/software/libc/">glibc</a>),
    although, where known,
    documentation of variations on other C libraries
    available for Linux is also included.
    The project provides manual pages in the following sections:
</p>

<ul>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_1.html">1: <em>User commands</em></a>; <em>man-pages</em> includes a very few Section 1 pages that
    document programs supplied by the GNU C library.
  </li>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_2.html">2: <em>System calls</em></a>
    documents the
    <a href="http://man7.org/linux/man-pages/man2/syscalls.2.html">system calls</a>
    provided by the Linux kernel.
  </li>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_3.html">3: <em>Library functions</em></a>
    documents the functions provided by the standard C library.
  </li>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_4.html">4: <em>Devices</em></a>
    documents details of various devices, most of which reside in
    <span class="pathname">/dev</span>.
  </li>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_5.html">5: <em>Files</em></a>
    describes various file formats, and includes
    <a href="http://man7.org/linux/man-pages/man5/proc.5.html">proc(5)</a>,
    which documents the 
    <span class="pathname">/proc</span>
    file system.
  </li>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_7.html">7: <em>Overviews,
    conventions, and miscellaneous</em></a>.
  </li>
  <li>
    <a href="http://man7.org/linux/man-pages/dir_section_8.html">8:
    <em>Superuser and system administration commands</em></a>;
    <em>man-pages</em> includes a very few Section 8 pages,
    mainly documenting programs supplied by the GNU C library.
  </li>
</ul>

<p>
  <a href="download.html">Download</a>
  &nbsp; | &nbsp; 
<a href="http://git.kernel.org/?p=docs/man-pages/man-pages.git">CGit</a>
  &nbsp; | &nbsp; 
  <a href="http://man7.org/linux/man-pages/index.html">Online man pages</a>
  &nbsp; | &nbsp; 
  <a href="http://man7.org/linux/man-pages/changelog.html">Changelog</a>
</p>

<p>
  <a href="contributing.html">Contributing</a>
  &nbsp; | &nbsp; 
  <a href="reporting_bugs.html">Reporting bugs</a>
  &nbsp; | &nbsp; 
  <a href="patches.html">Submitting patches</a>
  &nbsp; | &nbsp; 
  <a href="missing_pages.html">Missing pages</a>
</p>


<p>
</p>

<p>
  <a href="linux-man-ml.html">Mailing list</a>
  &nbsp; | &nbsp; 
  <a href="http://linux-man-pages.blogspot.com/">Project blog</a>
  &nbsp; | &nbsp; 
  <a href="maintaining.html">Project maintenance</a>
  &nbsp; | &nbsp; 
  <a href="translations.html">Translation projects</a>
  &nbsp; | &nbsp; 
  <a href="gsoc_2015.html">GSoC 2015 proposal</a>
</p>

<!--BEGIN-STATCOUNTER-->
<!-- SITETRACKING.linux_man-pages -->
<!-- Start of StatCounter Code -->
<script type="text/javascript">
var sc_project=5618989;
var sc_invisible=1;
var sc_partition=60;
var sc_click_stat=1;
var sc_security="4f8507d7";
</script>

<script type="text/javascript"
src="http://www.statcounter.com/counter/counter.js"></script><noscript><div
class="statcounter"><a title="customisable counter"
href="http://www.statcounter.com/free_hit_counter.html"
target="_blank"><img class="statcounter"
src="http://c.statcounter.com/5618989/0/4f8507d7/1/" alt="customisable
counter" ></a></div></noscript>
<!-- End of StatCounter Code -->
<!--END-STATCOUNTER-->
</body>
</html>
