(linenum→info "unix/slp.c:2238")

glibc/2.7/manual/intro.texi

    1: @node Introduction, Error Reporting, Top, Top
    2: @chapter Introduction
    3: @c %MENU% Purpose of the GNU C Library
    4: 
    5: The C language provides no built-in facilities for performing such
    6: common operations as input/output, memory management, string
    7: manipulation, and the like.  Instead, these facilities are defined
    8: in a standard @dfn{library}, which you compile and link with your
    9: programs.
   10: @cindex library
   11: 
   12: The GNU C library, described in this document, defines all of the
   13: library functions that are specified by the @w{ISO C} standard, as well as
   14: additional features specific to POSIX and other derivatives of the Unix
   15: operating system, and extensions specific to the GNU system.
   16: 
   17: The purpose of this manual is to tell you how to use the facilities
   18: of the GNU library.  We have mentioned which features belong to which
   19: standards to help you identify things that are potentially non-portable
   20: to other systems.  But the emphasis in this manual is not on strict
   21: portability.
   22: 
   23: @menu
   24: * Getting Started::             What this manual is for and how to use it.
   25: * Standards and Portability::   Standards and sources upon which the GNU
   26:                                  C library is based.
   27: * Using the Library::           Some practical uses for the library.
   28: * Roadmap to the Manual::       Overview of the remaining chapters in
   29:                                  this manual.
   30: @end menu
   31: 
   32: @node Getting Started, Standards and Portability,  , Introduction
   33: @section Getting Started
   34: 
   35: This manual is written with the assumption that you are at least
   36: somewhat familiar with the C programming language and basic programming
   37: concepts.  Specifically, familiarity with ISO standard C
   38: (@pxref{ISO C}), rather than ``traditional'' pre-ISO C dialects, is
   39: assumed.
   40: 
   41: The GNU C library includes several @dfn{header files}, each of which
   42: provides definitions and declarations for a group of related facilities;
   43: this information is used by the C compiler when processing your program.
   44: For example, the header file @file{stdio.h} declares facilities for
   45: performing input and output, and the header file @file{string.h}
   46: declares string processing utilities.  The organization of this manual
   47: generally follows the same division as the header files.
   48: 
   49: If you are reading this manual for the first time, you should read all
   50: of the introductory material and skim the remaining chapters.  There are
   51: a @emph{lot} of functions in the GNU C library and it's not realistic to
   52: expect that you will be able to remember exactly @emph{how} to use each
   53: and every one of them.  It's more important to become generally familiar
   54: with the kinds of facilities that the library provides, so that when you
   55: are writing your programs you can recognize @emph{when} to make use of
   56: library functions, and @emph{where} in this manual you can find more
   57: specific information about them.
   58: 
   59: 
   60: @node Standards and Portability, Using the Library, Getting Started, Introduction
   61: @section Standards and Portability
   62: @cindex standards
   63: 
   64: This section discusses the various standards and other sources that the
   65: GNU C library is based upon.  These sources include the @w{ISO C} and
   66: POSIX standards, and the System V and Berkeley Unix implementations.
   67: 
   68: The primary focus of this manual is to tell you how to make effective
   69: use of the GNU library facilities.  But if you are concerned about
   70: making your programs compatible with these standards, or portable to
   71: operating systems other than GNU, this can affect how you use the
   72: library.  This section gives you an overview of these standards, so that
   73: you will know what they are when they are mentioned in other parts of
   74: the manual.
   75: 
   76: @xref{Library Summary}, for an alphabetical list of the functions and
   77: other symbols provided by the library.  This list also states which
   78: standards each function or symbol comes from.
   79: 
   80: @menu
   81: * ISO C::                       The international standard for the C
   82:                                  programming language.
   83: * POSIX::                       The ISO/IEC 9945 (aka IEEE 1003) standards
   84:                                  for operating systems.
   85: * Berkeley Unix::               BSD and SunOS.
   86: * SVID::                        The System V Interface Description.
   87: * XPG::                         The X/Open Portability Guide.
   88: @end menu
   89: 
   90: @node ISO C, POSIX,  , Standards and Portability
   91: @subsection ISO C
   92: @cindex ISO C
   93: 
   94: The GNU C library is compatible with the C standard adopted by the
   95: American National Standards Institute (ANSI):
   96: @cite{American National Standard X3.159-1989---``ANSI C''} and later
   97: by the International Standardization Organization (ISO):
   98: @cite{ISO/IEC 9899:1990, ``Programming languages---C''}.
   99: We here refer to the standard as @w{ISO C} since this is the more
  100: general standard in respect of ratification.
  101: The header files and library facilities that make up the GNU library are
  102: a superset of those specified by the @w{ISO C} standard.@refill
  103: 
  104: @pindex gcc
  105: If you are concerned about strict adherence to the @w{ISO C} standard, you
  106: should use the @samp{-ansi} option when you compile your programs with
  107: the GNU C compiler.  This tells the compiler to define @emph{only} ISO
  108: standard features from the library header files, unless you explicitly
  109: ask for additional features.  @xref{Feature Test Macros}, for
  110: information on how to do this.
  111: 
  112: Being able to restrict the library to include only @w{ISO C} features is
  113: important because @w{ISO C} puts limitations on what names can be defined
  114: by the library implementation, and the GNU extensions don't fit these
  115: limitations.  @xref{Reserved Names}, for more information about these
  116: restrictions.
  117: 
  118: This manual does not attempt to give you complete details on the
  119: differences between @w{ISO C} and older dialects.  It gives advice on how
  120: to write programs to work portably under multiple C dialects, but does
  121: not aim for completeness.
  122: 
  123: 
  124: @node POSIX, Berkeley Unix, ISO C, Standards and Portability
  125: @subsection POSIX (The Portable Operating System Interface)
  126: @cindex POSIX
  127: @cindex POSIX.1
  128: @cindex IEEE Std 1003.1
  129: @cindex ISO/IEC 9945-1
  130: @cindex POSIX.2
  131: @cindex IEEE Std 1003.2
  132: @cindex ISO/IEC 9945-2
  133: 
  134: The GNU library is also compatible with the ISO @dfn{POSIX} family of
  135: standards, known more formally as the @dfn{Portable Operating System
  136: Interface for Computer Environments} (ISO/IEC 9945).  They were also
  137: published as ANSI/IEEE Std 1003.  POSIX is derived mostly from various
  138: versions of the Unix operating system.
  139: 
  140: The library facilities specified by the POSIX standards are a superset
  141: of those required by @w{ISO C}; POSIX specifies additional features for
  142: @w{ISO C} functions, as well as specifying new additional functions.  In
  143: general, the additional requirements and functionality defined by the
  144: POSIX standards are aimed at providing lower-level support for a
  145: particular kind of operating system environment, rather than general
  146: programming language support which can run in many diverse operating
  147: system environments.@refill
  148: 
  149: The GNU C library implements all of the functions specified in
  150: @cite{ISO/IEC 9945-1:1996, the POSIX System Application Program
  151: Interface}, commonly referred to as POSIX.1.  The primary extensions to
  152: the @w{ISO C} facilities specified by this standard include file system
  153: interface primitives (@pxref{File System Interface}), device-specific
  154: terminal control functions (@pxref{Low-Level Terminal Interface}), and
  155: process control functions (@pxref{Processes}).
  156: 
  157: Some facilities from @cite{ISO/IEC 9945-2:1993, the POSIX Shell and
  158: Utilities standard} (POSIX.2) are also implemented in the GNU library.
  159: These include utilities for dealing with regular expressions and other
  160: pattern matching facilities (@pxref{Pattern Matching}).
  161: 
  162: @comment Roland sez:
  163: @comment The GNU C library as it stands conforms to 1003.2 draft 11, which
  164: @comment specifies:
  165: @comment
  166: @comment Several new macros in <limits.h>.
  167: @comment popen, pclose
  168: @comment <regex.h> (which is not yet fully implemented--wait on this)
  169: @comment fnmatch
  170: @comment getopt
  171: @comment <glob.h>
  172: @comment <wordexp.h> (not yet implemented)
  173: @comment confstr
  174: 
  175: 
  176: @node Berkeley Unix, SVID, POSIX, Standards and Portability
  177: @subsection Berkeley Unix
  178: @cindex BSD Unix
  179: @cindex 4.@var{n} BSD Unix
  180: @cindex Berkeley Unix
  181: @cindex SunOS
  182: @cindex Unix, Berkeley
  183: 
  184: The GNU C library defines facilities from some versions of Unix which
  185: are not formally standardized, specifically from the 4.2 BSD, 4.3 BSD,
  186: and 4.4 BSD Unix systems (also known as @dfn{Berkeley Unix}) and from
  187: @dfn{SunOS} (a popular 4.2 BSD derivative that includes some Unix System
  188: V functionality).  These systems support most of the @w{ISO C} and POSIX
  189: facilities, and 4.4 BSD and newer releases of SunOS in fact support them all.
  190: 
  191: The BSD facilities include symbolic links (@pxref{Symbolic Links}), the
  192: @code{select} function (@pxref{Waiting for I/O}), the BSD signal
  193: functions (@pxref{BSD Signal Handling}), and sockets (@pxref{Sockets}).
  194: 
  195: @node SVID, XPG, Berkeley Unix, Standards and Portability
  196: @subsection SVID (The System V Interface Description)
  197: @cindex SVID
  198: @cindex System V Unix
  199: @cindex Unix, System V
  200: 
  201: The @dfn{System V Interface Description} (SVID) is a document describing
  202: the AT&T Unix System V operating system.  It is to some extent a
  203: superset of the POSIX standard (@pxref{POSIX}).
  204: 
  205: The GNU C library defines most of the facilities required by the SVID
  206: that are not also required by the @w{ISO C} or POSIX standards, for
  207: compatibility with  System V Unix and other Unix systems (such as
  208: SunOS) which include these facilities.  However, many of the more
  209: obscure and less generally useful facilities required by the SVID are
  210: not included.  (In fact, Unix System V itself does not provide them all.)
  211: 
  212: The supported facilities from System V include the methods for
  213: inter-process communication and shared memory, the @code{hsearch} and
  214: @code{drand48} families of functions, @code{fmtmsg} and several of the
  215: mathematical functions.
  216: 
  217: @node XPG, , SVID, Standards and Portability
  218: @subsection XPG (The X/Open Portability Guide)
  219: 
  220: The X/Open Portability Guide, published by the X/Open Company, Ltd., is
  221: a more general standard than POSIX.  X/Open owns the Unix copyright and
  222: the XPG specifies the requirements for systems which are intended to be
  223: a Unix system.
  224: 
  225: The GNU C library complies to the X/Open Portability Guide, Issue 4.2,
  226: with all extensions common to XSI (X/Open System Interface)
  227: compliant systems and also all X/Open UNIX extensions.
  228: 
  229: The additions on top of POSIX are mainly derived from functionality
  230: available in @w{System V} and BSD systems.  Some of the really bad
  231: mistakes in @w{System V} systems were corrected, though.  Since
  232: fulfilling the XPG standard with the Unix extensions is a
  233: precondition for getting the Unix brand chances are good that the
  234: functionality is available on commercial systems.
  235: 
  236: 
  237: @node Using the Library, Roadmap to the Manual, Standards and Portability, Introduction
  238: @section Using the Library
  239: 
  240: This section describes some of the practical issues involved in using
  241: the GNU C library.
  242: 
  243: @menu
  244: * Header Files::                How to include the header files in your
  245:                                  programs.
  246: * Macro Definitions::           Some functions in the library may really
  247:                                  be implemented as macros.
  248: * Reserved Names::              The C standard reserves some names for
  249:                                  the library, and some for users.
  250: * Feature Test Macros::         How to control what names are defined.
  251: @end menu
  252: 
  253: @node Header Files, Macro Definitions,  , Using the Library
  254: @subsection Header Files
  255: @cindex header files
  256: 
  257: Libraries for use by C programs really consist of two parts: @dfn{header
  258: files} that define types and macros and declare variables and
  259: functions; and the actual library or @dfn{archive} that contains the
  260: definitions of the variables and functions.
  261: 
  262: (Recall that in C, a @dfn{declaration} merely provides information that
  263: a function or variable exists and gives its type.  For a function
  264: declaration, information about the types of its arguments might be
  265: provided as well.  The purpose of declarations is to allow the compiler
  266: to correctly process references to the declared variables and functions.
  267: A @dfn{definition}, on the other hand, actually allocates storage for a
  268: variable or says what a function does.)
  269: @cindex definition (compared to declaration)
  270: @cindex declaration (compared to definition)
  271: 
  272: In order to use the facilities in the GNU C library, you should be sure
  273: that your program source files include the appropriate header files.
  274: This is so that the compiler has declarations of these facilities
  275: available and can correctly process references to them.  Once your
  276: program has been compiled, the linker resolves these references to
  277: the actual definitions provided in the archive file.
  278: 
  279: Header files are included into a program source file by the
  280: @samp{#include} preprocessor directive.  The C language supports two
  281: forms of this directive; the first,
  282: 
  283: @smallexample
  284: #include "@var{header}"
  285: @end smallexample
  286: 
  287: @noindent
  288: is typically used to include a header file @var{header} that you write
  289: yourself; this would contain definitions and declarations describing the
  290: interfaces between the different parts of your particular application.
  291: By contrast,
  292: 
  293: @smallexample
  294: #include <file.h>
  295: @end smallexample
  296: 
  297: @noindent
  298: is typically used to include a header file @file{file.h} that contains
  299: definitions and declarations for a standard library.  This file would
  300: normally be installed in a standard place by your system administrator.
  301: You should use this second form for the C library header files.
  302: 
  303: Typically, @samp{#include} directives are placed at the top of the C
  304: source file, before any other code.  If you begin your source files with
  305: some comments explaining what the code in the file does (a good idea),
  306: put the @samp{#include} directives immediately afterwards, following the
  307: feature test macro definition (@pxref{Feature Test Macros}).
  308: 
  309: For more information about the use of header files and @samp{#include}
  310: directives, @pxref{Header Files,,, cpp.info, The GNU C Preprocessor
  311: Manual}.@refill
  312: 
  313: The GNU C library provides several header files, each of which contains
  314: the type and macro definitions and variable and function declarations
  315: for a group of related facilities.  This means that your programs may
  316: need to include several header files, depending on exactly which
  317: facilities you are using.
  318: 
  319: Some library header files include other library header files
  320: automatically.  However, as a matter of programming style, you should
  321: not rely on this; it is better to explicitly include all the header
  322: files required for the library facilities you are using.  The GNU C
  323: library header files have been written in such a way that it doesn't
  324: matter if a header file is accidentally included more than once;
  325: including a header file a second time has no effect.  Likewise, if your
  326: program needs to include multiple header files, the order in which they
  327: are included doesn't matter.
  328: 
  329: @strong{Compatibility Note:} Inclusion of standard header files in any
  330: order and any number of times works in any @w{ISO C} implementation.
  331: However, this has traditionally not been the case in many older C
  332: implementations.
  333: 
  334: Strictly speaking, you don't @emph{have to} include a header file to use
  335: a function it declares; you could declare the function explicitly
  336: yourself, according to the specifications in this manual.  But it is
  337: usually better to include the header file because it may define types
  338: and macros that are not otherwise available and because it may define
  339: more efficient macro replacements for some functions.  It is also a sure
  340: way to have the correct declaration.
  341: 
  342: @node Macro Definitions, Reserved Names, Header Files, Using the Library
  343: @subsection Macro Definitions of Functions
  344: @cindex shadowing functions with macros
  345: @cindex removing macros that shadow functions
  346: @cindex undefining macros that shadow functions
  347: 
  348: If we describe something as a function in this manual, it may have a
  349: macro definition as well.  This normally has no effect on how your
  350: program runs---the macro definition does the same thing as the function
  351: would.  In particular, macro equivalents for library functions evaluate
  352: arguments exactly once, in the same way that a function call would.  The
  353: main reason for these macro definitions is that sometimes they can
  354: produce an inline expansion that is considerably faster than an actual
  355: function call.
  356: 
  357: Taking the address of a library function works even if it is also
  358: defined as a macro.  This is because, in this context, the name of the
  359: function isn't followed by the left parenthesis that is syntactically
  360: necessary to recognize a macro call.
  361: 
  362: You might occasionally want to avoid using the macro definition of a
  363: function---perhaps to make your program easier to debug.  There are
  364: two ways you can do this:
  365: 
  366: @itemize @bullet
  367: @item
  368: You can avoid a macro definition in a specific use by enclosing the name
  369: of the function in parentheses.  This works because the name of the
  370: function doesn't appear in a syntactic context where it is recognizable
  371: as a macro call.
  372: 
  373: @item
  374: You can suppress any macro definition for a whole source file by using
  375: the @samp{#undef} preprocessor directive, unless otherwise stated
  376: explicitly in the description of that facility.
  377: @end itemize
  378: 
  379: For example, suppose the header file @file{stdlib.h} declares a function
  380: named @code{abs} with
  381: 
  382: @smallexample
  383: extern int abs (int);
  384: @end smallexample
  385: 
  386: @noindent
  387: and also provides a macro definition for @code{abs}.  Then, in:
  388: 
  389: @smallexample
  390: #include <stdlib.h>
  391: int f (int *i) @{ return abs (++*i); @}
  392: @end smallexample
  393: 
  394: @noindent
  395: the reference to @code{abs} might refer to either a macro or a function.
  396: On the other hand, in each of the following examples the reference is
  397: to a function and not a macro.
  398: 
  399: @smallexample
  400: #include <stdlib.h>
  401: int g (int *i) @{ return (abs) (++*i); @}
  402: 
  403: #undef abs
  404: int h (int *i) @{ return abs (++*i); @}
  405: @end smallexample
  406: 
  407: Since macro definitions that double for a function behave in
  408: exactly the same way as the actual function version, there is usually no
  409: need for any of these methods.  In fact, removing macro definitions usually
  410: just makes your program slower.
  411: 
  412: 
  413: @node Reserved Names, Feature Test Macros, Macro Definitions, Using the Library
  414: @subsection Reserved Names
  415: @cindex reserved names
  416: @cindex name space
  417: 
  418: The names of all library types, macros, variables and functions that
  419: come from the @w{ISO C} standard are reserved unconditionally; your program
  420: @strong{may not} redefine these names.  All other library names are
  421: reserved if your program explicitly includes the header file that
  422: defines or declares them.  There are several reasons for these
  423: restrictions:
  424: 
  425: @itemize @bullet
  426: @item
  427: Other people reading your code could get very confused if you were using
  428: a function named @code{exit} to do something completely different from
  429: what the standard @code{exit} function does, for example.  Preventing
  430: this situation helps to make your programs easier to understand and
  431: contributes to modularity and maintainability.
  432: 
  433: @item
  434: It avoids the possibility of a user accidentally redefining a library
  435: function that is called by other library functions.  If redefinition
  436: were allowed, those other functions would not work properly.
  437: 
  438: @item
  439: It allows the compiler to do whatever special optimizations it pleases
  440: on calls to these functions, without the possibility that they may have
  441: been redefined by the user.  Some library facilities, such as those for
  442: dealing with variadic arguments (@pxref{Variadic Functions})
  443: and non-local exits (@pxref{Non-Local Exits}), actually require a
  444: considerable amount of cooperation on the part of the C compiler, and
  445: with respect to the implementation, it might be easier for the compiler
  446: to treat these as built-in parts of the language.
  447: @end itemize
  448: 
  449: In addition to the names documented in this manual, reserved names
  450: include all external identifiers (global functions and variables) that
  451: begin with an underscore (@samp{_}) and all identifiers regardless of
  452: use that begin with either two underscores or an underscore followed by
  453: a capital letter are reserved names.  This is so that the library and
  454: header files can define functions, variables, and macros for internal
  455: purposes without risk of conflict with names in user programs.
  456: 
  457: Some additional classes of identifier names are reserved for future
  458: extensions to the C language or the POSIX.1 environment.  While using these
  459: names for your own purposes right now might not cause a problem, they do
  460: raise the possibility of conflict with future versions of the C
  461: or POSIX standards, so you should avoid these names.
  462: 
  463: @itemize @bullet
  464: @item
  465: Names beginning with a capital @samp{E} followed a digit or uppercase
  466: letter may be used for additional error code names.  @xref{Error
  467: Reporting}.
  468: 
  469: @item
  470: Names that begin with either @samp{is} or @samp{to} followed by a
  471: lowercase letter may be used for additional character testing and
  472: conversion functions.  @xref{Character Handling}.
  473: 
  474: @item
  475: Names that begin with @samp{LC_} followed by an uppercase letter may be
  476: used for additional macros specifying locale attributes.
  477: @xref{Locales}.
  478: 
  479: @item
  480: Names of all existing mathematics functions (@pxref{Mathematics})
  481: suffixed with @samp{f} or @samp{l} are reserved for corresponding
  482: functions that operate on @code{float} and @code{long double} arguments,
  483: respectively.
  484: 
  485: @item
  486: Names that begin with @samp{SIG} followed by an uppercase letter are
  487: reserved for additional signal names.  @xref{Standard Signals}.
  488: 
  489: @item
  490: Names that begin with @samp{SIG_} followed by an uppercase letter are
  491: reserved for additional signal actions.  @xref{Basic Signal Handling}.
  492: 
  493: @item
  494: Names beginning with @samp{str}, @samp{mem}, or @samp{wcs} followed by a
  495: lowercase letter are reserved for additional string and array functions.
  496: @xref{String and Array Utilities}.
  497: 
  498: @item
  499: Names that end with @samp{_t} are reserved for additional type names.
  500: @end itemize
  501: 
  502: In addition, some individual header files reserve names beyond
  503: those that they actually define.  You only need to worry about these
  504: restrictions if your program includes that particular header file.
  505: 
  506: @itemize @bullet
  507: @item
  508: The header file @file{dirent.h} reserves names prefixed with
  509: @samp{d_}.
  510: @pindex dirent.h
  511: 
  512: @item
  513: The header file @file{fcntl.h} reserves names prefixed with
  514: @samp{l_}, @samp{F_}, @samp{O_}, and @samp{S_}.
  515: @pindex fcntl.h
  516: 
  517: @item
  518: The header file @file{grp.h} reserves names prefixed with @samp{gr_}.
  519: @pindex grp.h
  520: 
  521: @item
  522: The header file @file{limits.h} reserves names suffixed with @samp{_MAX}.
  523: @pindex limits.h
  524: 
  525: @item
  526: The header file @file{pwd.h} reserves names prefixed with @samp{pw_}.
  527: @pindex pwd.h
  528: 
  529: @item
  530: The header file @file{signal.h} reserves names prefixed with @samp{sa_}
  531: and @samp{SA_}.
  532: @pindex signal.h
  533: 
  534: @item
  535: The header file @file{sys/stat.h} reserves names prefixed with @samp{st_}
  536: and @samp{S_}.
  537: @pindex sys/stat.h
  538: 
  539: @item
  540: The header file @file{sys/times.h} reserves names prefixed with @samp{tms_}.
  541: @pindex sys/times.h
  542: 
  543: @item
  544: The header file @file{termios.h} reserves names prefixed with @samp{c_},
  545: @samp{V}, @samp{I}, @samp{O}, and @samp{TC}; and names prefixed with
  546: @samp{B} followed by a digit.
  547: @pindex termios.h
  548: @end itemize
  549: 
  550: @comment Include the section on Creature Nest Macros.
  551: @comment It is in a separate file so it can be formatted into ../NOTES.
  552: @include creature.texi
  553: 
  554: @node Roadmap to the Manual,  , Using the Library, Introduction
  555: @section Roadmap to the Manual
  556: 
  557: Here is an overview of the contents of the remaining chapters of
  558: this manual.
  559: 
  560: @itemize @bullet
  561: @item
  562: @ref{Error Reporting}, describes how errors detected by the library
  563: are reported.
  564: 
  565: @item
  566: @ref{Language Features}, contains information about library support for
  567: standard parts of the C language, including things like the @code{sizeof}
  568: operator and the symbolic constant @code{NULL}, how to write functions
  569: accepting variable numbers of arguments, and constants describing the
  570: ranges and other properties of the numerical types.  There is also a simple
  571: debugging mechanism which allows you to put assertions in your code, and
  572: have diagnostic messages printed if the tests fail.
  573: 
  574: @item
  575: @ref{Memory}, describes the GNU library's facilities for managing and
  576: using virtual and real memory, including dynamic allocation of virtual
  577: memory.  If you do not know in advance how much memory your program
  578: needs, you can allocate it dynamically instead, and manipulate it via
  579: pointers.
  580: 
  581: @item
  582: @ref{Character Handling}, contains information about character
  583: classification functions (such as @code{isspace}) and functions for
  584: performing case conversion.
  585: 
  586: @item
  587: @ref{String and Array Utilities}, has descriptions of functions for
  588: manipulating strings (null-terminated character arrays) and general
  589: byte arrays, including operations such as copying and comparison.
  590: 
  591: @item
  592: @ref{I/O Overview}, gives an overall look at the input and output
  593: facilities in the library, and contains information about basic concepts
  594: such as file names.
  595: 
  596: @item
  597: @ref{I/O on Streams}, describes I/O operations involving streams (or
  598: @w{@code{FILE *}} objects).  These are the normal C library functions
  599: from @file{stdio.h}.
  600: 
  601: @item
  602: @ref{Low-Level I/O}, contains information about I/O operations
  603: on file descriptors.  File descriptors are a lower-level mechanism
  604: specific to the Unix family of operating systems.
  605: 
  606: @item
  607: @ref{File System Interface}, has descriptions of operations on entire
  608: files, such as functions for deleting and renaming them and for creating
  609: new directories.  This chapter also contains information about how you
  610: can access the attributes of a file, such as its owner and file protection
  611: modes.
  612: 
  613: @item
  614: @ref{Pipes and FIFOs}, contains information about simple interprocess
  615: communication mechanisms.  Pipes allow communication between two related
  616: processes (such as between a parent and child), while FIFOs allow
  617: communication between processes sharing a common file system on the same
  618: machine.
  619: 
  620: @item
  621: @ref{Sockets}, describes a more complicated interprocess communication
  622: mechanism that allows processes running on different machines to
  623: communicate over a network.  This chapter also contains information about
  624: Internet host addressing and how to use the system network databases.
  625: 
  626: @item
  627: @ref{Low-Level Terminal Interface}, describes how you can change the
  628: attributes of a terminal device.  If you want to disable echo of
  629: characters typed by the user, for example, read this chapter.
  630: 
  631: @item
  632: @ref{Mathematics}, contains information about the math library
  633: functions.  These include things like random-number generators and
  634: remainder functions on integers as well as the usual trigonometric and
  635: exponential functions on floating-point numbers.
  636: 
  637: @item
  638: @ref{Arithmetic,, Low-Level Arithmetic Functions}, describes functions
  639: for simple arithmetic, analysis of floating-point values, and reading
  640: numbers from strings.
  641: 
  642: @item
  643: @ref{Searching and Sorting}, contains information about functions
  644: for searching and sorting arrays.  You can use these functions on any
  645: kind of array by providing an appropriate comparison function.
  646: 
  647: @item
  648: @ref{Pattern Matching}, presents functions for matching regular expressions
  649: and shell file name patterns, and for expanding words as the shell does.
  650: 
  651: @item
  652: @ref{Date and Time}, describes functions for measuring both calendar time
  653: and CPU time, as well as functions for setting alarms and timers.
  654: 
  655: @item
  656: @ref{Character Set Handling}, contains information about manipulating
  657: characters and strings using character sets larger than will fit in
  658: the usual @code{char} data type.
  659: 
  660: @item
  661: @ref{Locales}, describes how selecting a particular country
  662: or language affects the behavior of the library.  For example, the locale
  663: affects collation sequences for strings and how monetary values are
  664: formatted.
  665: 
  666: @item
  667: @ref{Non-Local Exits}, contains descriptions of the @code{setjmp} and
  668: @code{longjmp} functions.  These functions provide a facility for
  669: @code{goto}-like jumps which can jump from one function to another.
  670: 
  671: @item
  672: @ref{Signal Handling}, tells you all about signals---what they are,
  673: how to establish a handler that is called when a particular kind of
  674: signal is delivered, and how to prevent signals from arriving during
  675: critical sections of your program.
  676: 
  677: @item
  678: @ref{Program Basics}, tells how your programs can access their
  679: command-line arguments and environment variables.
  680: 
  681: @item
  682: @ref{Processes}, contains information about how to start new processes
  683: and run programs.
  684: 
  685: @item
  686: @ref{Job Control}, describes functions for manipulating process groups
  687: and the controlling terminal.  This material is probably only of
  688: interest if you are writing a shell or other program which handles job
  689: control specially.
  690: 
  691: @item
  692: @ref{Name Service Switch}, describes the services which are available
  693: for looking up names in the system databases, how to determine which
  694: service is used for which database, and how these services are
  695: implemented so that contributors can design their own services.
  696: 
  697: @item
  698: @ref{User Database}, and @ref{Group Database}, tell you how to access
  699: the system user and group databases.
  700: 
  701: @item
  702: @ref{System Management}, describes functions for controlling and getting
  703: information about the hardware and software configuration your program
  704: is executing under.
  705: 
  706: @item
  707: @ref{System Configuration}, tells you how you can get information about
  708: various operating system limits.  Most of these parameters are provided for
  709: compatibility with POSIX.
  710: 
  711: @item
  712: @ref{Library Summary}, gives a summary of all the functions, variables, and
  713: macros in the library, with complete data types and function prototypes,
  714: and says what standard or system each is derived from.
  715: 
  716: @item
  717: @ref{Maintenance}, explains how to build and install the GNU C library on
  718: your system, how to report any bugs you might find, and how to add new
  719: functions or port the library to a new system.
  720: @end itemize
  721: 
  722: If you already know the name of the facility you are interested in, you
  723: can look it up in @ref{Library Summary}.  This gives you a summary of
  724: its syntax and a pointer to where you can find a more detailed
  725: description.  This appendix is particularly useful if you just want to
  726: verify the order and type of arguments to a function, for example.  It
  727: also tells you what standard or system each function, variable, or macro
  728: is derived from.
1
Syntax (Markdown)