changes so far
[glibc/nacl-glibc.git] / manual / intro.texi
blob858cd1d6333760f00b52ca7746bdc1060553619a
1 @node Introduction, Error Reporting, Top, Top
2 @chapter Introduction
3 @c %MENU% Purpose of the GNU C Library
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
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.
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.
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
32 @node Getting Started, Standards and Portability,  , Introduction
33 @section Getting Started
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.
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.
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.
60 @node Standards and Portability, Using the Library, Getting Started, Introduction
61 @section Standards and Portability
62 @cindex standards
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.
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.
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.
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
90 @node ISO C, POSIX,  , Standards and Portability
91 @subsection ISO C
92 @cindex ISO C
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
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.
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.
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.
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
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.
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
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}).
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}).
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
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
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.
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}).
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
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}).
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.)
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.
217 @node XPG, , SVID, Standards and Portability
218 @subsection XPG (The X/Open Portability Guide)
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.
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.
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.
237 @node Using the Library, Roadmap to the Manual, Standards and Portability, Introduction
238 @section Using the Library
240 This section describes some of the practical issues involved in using
241 the GNU C library.
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
253 @node Header Files, Macro Definitions,  , Using the Library
254 @subsection Header Files
255 @cindex header files
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.
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)
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.
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,
283 @smallexample
284 #include "@var{header}"
285 @end smallexample
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,
293 @smallexample
294 #include <file.h>
295 @end smallexample
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.
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}).
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
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.
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.
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.
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.
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
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.
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.
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:
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.
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
379 For example, suppose the header file @file{stdlib.h} declares a function
380 named @code{abs} with
382 @smallexample
383 extern int abs (int);
384 @end smallexample
386 @noindent
387 and also provides a macro definition for @code{abs}.  Then, in:
389 @smallexample
390 #include <stdlib.h>
391 int f (int *i) @{ return abs (++*i); @}
392 @end smallexample
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.
399 @smallexample
400 #include <stdlib.h>
401 int g (int *i) @{ return (abs) (++*i); @}
403 #undef abs
404 int h (int *i) @{ return abs (++*i); @}
405 @end smallexample
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.
413 @node Reserved Names, Feature Test Macros, Macro Definitions, Using the Library
414 @subsection Reserved Names
415 @cindex reserved names
416 @cindex name space
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:
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.
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.
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
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.
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.
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}.
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}.
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}.
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.
485 @item
486 Names that begin with @samp{SIG} followed by an uppercase letter are
487 reserved for additional signal names.  @xref{Standard Signals}.
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}.
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}.
498 @item
499 Names that end with @samp{_t} are reserved for additional type names.
500 @end itemize
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.
506 @itemize @bullet
507 @item
508 The header file @file{dirent.h} reserves names prefixed with
509 @samp{d_}.
510 @pindex dirent.h
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
517 @item
518 The header file @file{grp.h} reserves names prefixed with @samp{gr_}.
519 @pindex grp.h
521 @item
522 The header file @file{limits.h} reserves names suffixed with @samp{_MAX}.
523 @pindex limits.h
525 @item
526 The header file @file{pwd.h} reserves names prefixed with @samp{pw_}.
527 @pindex pwd.h
529 @item
530 The header file @file{signal.h} reserves names prefixed with @samp{sa_}
531 and @samp{SA_}.
532 @pindex signal.h
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
539 @item
540 The header file @file{sys/times.h} reserves names prefixed with @samp{tms_}.
541 @pindex sys/times.h
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
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
554 @node Roadmap to the Manual,  , Using the Library, Introduction
555 @section Roadmap to the Manual
557 Here is an overview of the contents of the remaining chapters of
558 this manual.
560 @itemize @bullet
561 @item
562 @ref{Error Reporting}, describes how errors detected by the library
563 are reported.
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.
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.
581 @item
582 @ref{Character Handling}, contains information about character
583 classification functions (such as @code{isspace}) and functions for
584 performing case conversion.
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.
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.
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}.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
677 @item
678 @ref{Program Basics}, tells how your programs can access their
679 command-line arguments and environment variables.
681 @item
682 @ref{Processes}, contains information about how to start new processes
683 and run programs.
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.
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.
697 @item
698 @ref{User Database}, and @ref{Group Database}, tell you how to access
699 the system user and group databases.
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.
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.
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.
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
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.