Top
Node:Top ,
Next:Introduction
Next:Introduction
Main Menu
This is Edition 0.09 DRAFT, last updated 28 Aug 1999, of
The GNU C Library Reference Manual , for Version 2.2 Beta
of the GNU C Library.
Introduction : Purpose of the GNU C Library.
Error Reporting : How library functions report errors.
Memory : Allocating virtual memory and controlling
paging.
Character Handling : Character testing and conversion functions.
String and Array Utilities : Utilities for copying and comparing strings
and arrays.
Character Set Handling : Support for extended character sets.
Locales : The country and language can affect the
behavior of library functions.
Message Translation : How to make the program speak the user's
language.
Searching and Sorting : General searching and sorting functions.
Pattern Matching : Matching shell ``globs'' and regular
expressions.
I/O Overview : Introduction to the I/O facilities.
I/O on Streams : High-level, portable I/O facilities.
Low-Level I/O : Low-level, less portable I/O.
File System Interface : Functions for manipulating files.
Pipes and FIFOs : A simple interprocess communication
mechanism.
Sockets : A more complicated IPC mechanism, with
networking support.
Low-Level Terminal Interface : How to change the characteristics of a
terminal device.
Syslog : System logging and messaging.
Mathematics : Math functions, useful constants, random
numbers.
Arithmetic : Low level arithmetic functions.
Date and Time : Functions for getting the date and time and
formatting them nicely.
Resource Usage And Limitation : Functions for examining resource usage and
getting and setting limits.
Non-Local Exits : Jumping out of nested function calls.
Signal Handling : How to send, block, and handle signals.
Program Basics : Writing the beginning and end of your
program.
Processes : How to create processes and run other
programs.
Job Control : All about process groups and sessions.
Name Service Switch : Accessing system databases.
Users and Groups : How users are identified and classified.
System Management : Controlling the system and getting
information about it.
System Configuration : Parameters describing operating system
limits.
Cryptographic Functions : DES encryption and password handling.
Debugging Support : Functions to help debugging applications..
Appendices
Language Features : C language features provided by the library.
Library Summary : A summary showing the syntax, header file,
and derivation of each library feature.
Installation : How to install the GNU C library.
Maintenance : How to enhance and port the GNU C Library.
Contributors : Who wrote what parts of the GNU C library.
Copying : The GNU Library General Public License says
how you can copy and share the GNU C Library.
Indices
Concept Index : Index of concepts and names.
Type Index : Index of types and type qualifiers.
Function Index : Index of functions and function-like macros.
Variable Index : Index of variables and variable-like macros.
File Index : Index of programs and files.
--- The Detailed Node Listing ---
Introduction
Getting Started : What this manual is for and how to use it.
Standards and Portability : Standards and sources upon which the GNU
C library is based.
Using the Library : Some practical uses for the library.
Roadmap to the Manual : Overview of the remaining chapters in
this manual.
Standards and Portability
ISO C : The international standard for the C
programming language.
POSIX : The ISO/IEC 9945 (aka IEEE 1003) standards
for operating systems.
Berkeley Unix : BSD and SunOS.
SVID : The System V Interface Description.
XPG : The X/Open Portability Guide.
Using the Library
Header Files : How to include the header files in your
programs.
Macro Definitions : Some functions in the library may really
be implemented as macros.
Reserved Names : The C standard reserves some names for
the library, and some for users.
Feature Test Macros : How to control what names are defined.
Error Reporting
Checking for Errors : How errors are reported by library functions.
Error Codes : Error code macros; all of these expand
into integer constant values.
Error Messages : Mapping error codes onto error messages.
Memory
Memory Concepts : An introduction to concepts and terminology.
Memory Allocation : Allocating storage for your program data
Locking Pages : Preventing page faults
Resizing the Data Segment : brk
, sbrk
Memory Allocation
Memory Allocation and C : How to get different kinds of allocation in C.
Unconstrained Allocation : The malloc
facility allows fully general
dynamic allocation.
Allocation Debugging : Finding memory leaks and not freed memory.
Obstacks : Obstacks are less general than malloc
but more efficient and convenient.
Variable Size Automatic : Allocation of variable-sized blocks
of automatic storage that are freed when the
calling function returns.
Unconstrained Allocation
Basic Allocation : Simple use of malloc
.
Malloc Examples : Examples of malloc
. xmalloc
.
Freeing after Malloc : Use free
to free a block you
got with malloc
.
Changing Block Size : Use realloc
to make a block
bigger or smaller.
Allocating Cleared Space : Use calloc
to allocate a
block and clear it.
Efficiency and Malloc : Efficiency considerations in use of
these functions.
Aligned Memory Blocks : Allocating specially aligned memory.
Malloc Tunable Parameters : Use mallopt
to adjust allocation
parameters.
Heap Consistency Checking : Automatic checking for errors.
Hooks for Malloc : You can use these hooks for debugging
programs that use malloc
.
Statistics of Malloc : Getting information about how much
memory your program is using.
Summary of Malloc : Summary of malloc
and related functions.
Allocation Debugging
Tracing malloc : How to install the tracing functionality.
Using the Memory Debugger : Example programs excerpts.
Tips for the Memory Debugger : Some more or less clever ideas.
Interpreting the traces : What do all these lines mean?
Obstacks
Creating Obstacks : How to declare an obstack in your program.
Preparing for Obstacks : Preparations needed before you can
use obstacks.
Allocation in an Obstack : Allocating objects in an obstack.
Freeing Obstack Objects : Freeing objects in an obstack.
Obstack Functions : The obstack functions are both
functions and macros.
Growing Objects : Making an object bigger by stages.
Extra Fast Growing : Extra-high-efficiency (though more
complicated) growing objects.
Status of an Obstack : Inquiries about the status of an obstack.
Obstacks Data Alignment : Controlling alignment of objects in obstacks.
Obstack Chunks : How obstacks obtain and release chunks;
efficiency considerations.
Summary of Obstacks :
Variable Size Automatic
Alloca Example : Example of using alloca
.
Advantages of Alloca : Reasons to use alloca
.
Disadvantages of Alloca : Reasons to avoid alloca
.
GNU C Variable-Size Arrays : Only in GNU C, here is an alternative
method of allocating dynamically and
freeing automatically.
Locking Pages
Why Lock Pages : Reasons to read this section.
Locked Memory Details : Everything you need to know locked
memory
Page Lock Functions : Here's how to do it.
Character Handling
Classification of Characters : Testing whether characters are
letters, digits, punctuation, etc.
Case Conversion : Case mapping, and the like.
Classification of Wide Characters : Character class determination for
wide characters.
Using Wide Char Classes : Notes on using the wide character
classes.
Wide Character Case Conversion : Mapping of wide characters.
String and Array Utilities
Representation of Strings : Introduction to basic concepts.
String/Array Conventions : Whether to use a string function or an
arbitrary array function.
String Length : Determining the length of a string.
Copying and Concatenation : Functions to copy the contents of strings
and arrays.
String/Array Comparison : Functions for byte-wise and character-wise
comparison.
Collation Functions : Functions for collating strings.
Search Functions : Searching for a specific element or substring.
Finding Tokens in a String : Splitting a string into tokens by looking
for delimiters.
strfry : Function for flash-cooking a string.
Trivial Encryption : Obscuring data.
Encode Binary Data : Encoding and Decoding of Binary Data.
Argz and Envz Vectors : Null-separated string vectors.
Argz and Envz Vectors
Argz Functions : Operations on argz vectors.
Envz Functions : Additional operations on environment vectors.
Character Set Handling
Extended Char Intro : Introduction to Extended Characters.
Charset Function Overview : Overview about Character Handling
Functions.
Restartable multibyte conversion : Restartable multibyte conversion
Functions.
Non-reentrant Conversion : Non-reentrant Conversion Function.
Generic Charset Conversion : Generic Charset Conversion.
Restartable multibyte conversion
Selecting the Conversion : Selecting the conversion and its properties.
Keeping the state : Representing the state of the conversion.
Converting a Character : Converting Single Characters.
Converting Strings : Converting Multibyte and Wide Character
Strings.
Multibyte Conversion Example : A Complete Multibyte Conversion Example.
Non-reentrant Conversion
Non-reentrant Character Conversion : Non-reentrant Conversion of Single
Characters.
Non-reentrant String Conversion : Non-reentrant Conversion of Strings.
Shift State : States in Non-reentrant Functions.
Generic Charset Conversion
Generic Conversion Interface : Generic Character Set Conversion Interface.
iconv Examples : A complete iconv
example.
Other iconv Implementations : Some Details about other iconv
Implementations.
glibc iconv Implementation : The iconv
Implementation in the GNU C
library.
Locales
Effects of Locale : Actions affected by the choice of
locale.
Choosing Locale : How the user specifies a locale.
Locale Categories : Different purposes for which you can
select a locale.
Setting the Locale : How a program specifies the locale
with library functions.
Standard Locales : Locale names available on all systems.
Locale Information : How to access the information for the locale.
Formatting Numbers : A dedicated function to format numbers.
Locale Information
The Lame Way to Locale Data : ISO C's localeconv
.
The Elegant and Fast Way : X/Open's nl_langinfo
.
The Lame Way to Locale Data
General Numeric : Parameters for formatting numbers and
currency amounts.
Currency Symbol : How to print the symbol that identifies an
amount of money (e.g. $
).
Sign of Money Amount : How to print the (positive or negative) sign
for a monetary amount, if one exists.
Message Translation
Message catalogs a la X/Open : The catgets
family of functions.
The Uniforum approach : The gettext
family of functions.
Message catalogs a la X/Open
The catgets Functions : The catgets
function family.
The message catalog files : Format of the message catalog files.
The gencat program : How to generate message catalogs files which
can be used by the functions.
Common Usage : How to use the catgets
interface.
The Uniforum approach
Message catalogs with gettext : The gettext
family of functions.
Helper programs for gettext : Programs to handle message catalogs
for gettext
.
Message catalogs with gettext
Translation with gettext : What has to be done to translate a message.
Locating gettext catalog : How to determine which catalog to be used.
Advanced gettext functions : Additional functions for more complicated
situations.
Charset conversion in gettext : How to specify the output character set
gettext
uses.
GUI program problems : How to use gettext
in GUI programs.
Using gettextized software : The possibilities of the user to influence
the way gettext
works.
Searching and Sorting
Comparison Functions : Defining how to compare two objects.
Since the sort and search facilities
are general, you have to specify the
ordering.
Array Search Function : The bsearch
function.
Array Sort Function : The qsort
function.
Search/Sort Example : An example program.
Hash Search Function : The hsearch
function.
Tree Search Function : The tsearch
function.
Pattern Matching
Wildcard Matching : Matching a wildcard pattern against a single string.
Globbing : Finding the files that match a wildcard pattern.
Regular Expressions : Matching regular expressions against strings.
Word Expansion : Expanding shell variables, nested commands,
arithmetic, and wildcards.
This is what the shell does with shell commands.
Globbing
Calling Glob : Basic use of glob
.
Flags for Globbing : Flags that enable various options in glob
.
More Flags for Globbing : GNU specific extensions to glob
.
Regular Expressions
POSIX Regexp Compilation : Using regcomp
to prepare to match.
Flags for POSIX Regexps : Syntax variations for regcomp
.
Matching POSIX Regexps : Using regexec
to match the compiled
pattern that you get from regcomp
.
Regexp Subexpressions : Finding which parts of the string were matched.
Subexpression Complications : Find points of which parts were matched.
Regexp Cleanup : Freeing storage; reporting errors.
Word Expansion
Expansion Stages : What word expansion does to a string.
Calling Wordexp : How to call wordexp
.
Flags for Wordexp : Options you can enable in wordexp
.
Wordexp Example : A sample program that does word expansion.
Tilde Expansion : Details of how tilde expansion works.
Variable Substitution : Different types of variable substitution.
I/O Overview
I/O Concepts : Some basic information and terminology.
File Names : How to refer to a file.
I/O Concepts
Streams and File Descriptors : The GNU Library provides two ways
to access the contents of files.
File Position : The number of bytes from the
beginning of the file.
File Names
Directories : Directories contain entries for files.
File Name Resolution : A file name specifies how to look up a file.
File Name Errors : Error conditions relating to file names.
File Name Portability : File name portability and syntax issues.
I/O on Streams
Streams : About the data type representing a stream.
Standard Streams : Streams to the standard input and output
devices are created for you.
Opening Streams : How to create a stream to talk to a file.
Closing Streams : Close a stream when you are finished with it.
Streams and Threads : Issues with streams in threaded programs.
Streams and I18N : Streams in internationalized applications.
Simple Output : Unformatted output by characters and lines.
Character Input : Unformatted input by characters and words.
Line Input : Reading a line or a record from a stream.
Unreading : Peeking ahead/pushing back input just read.
Block Input/Output : Input and output operations on blocks of data.
Formatted Output : printf
and related functions.
Customizing Printf : You can define new conversion specifiers for
printf
and friends.
Formatted Input : scanf
and related functions.
EOF and Errors : How you can tell if an I/O error happens.
Error Recovery : What you can do about errors.
Binary Streams : Some systems distinguish between text files
and binary files.
File Positioning : About random-access streams.
Portable Positioning : Random access on peculiar ISO C systems.
Stream Buffering : How to control buffering of streams.
Other Kinds of Streams : Streams that do not necessarily correspond
to an open file.
Formatted Messages : Print strictly formatted messages.
Unreading
Unreading Idea : An explanation of unreading with pictures.
How Unread : How to call ungetc
to do unreading.
Formatted Output
Formatted Output Basics : Some examples to get you started.
Output Conversion Syntax : General syntax of conversion
specifications.
Table of Output Conversions : Summary of output conversions and
what they do.
Integer Conversions : Details about formatting of integers.
Floating-Point Conversions : Details about formatting of
floating-point numbers.
Other Output Conversions : Details about formatting of strings,
characters, pointers, and the like.
Formatted Output Functions : Descriptions of the actual functions.
Dynamic Output : Functions that allocate memory for the output.
Variable Arguments Output : vprintf
and friends.
Parsing a Template String : What kinds of args does a given template
call for?
Example of Parsing : Sample program using parse_printf_format
.
Customizing Printf
Registering New Conversions : Using register_printf_function
to register a new output conversion.
Conversion Specifier Options : The handler must be able to get
the options specified in the
template when it is called.
Defining the Output Handler : Defining the handler and arginfo
functions that are passed as arguments
to register_printf_function
.
Printf Extension Example : How to define a printf
handler function.
Predefined Printf Handlers : Predefined printf
handlers.
Formatted Input
Formatted Input Basics : Some basics to get you started.
Input Conversion Syntax : Syntax of conversion specifications.
Table of Input Conversions : Summary of input conversions and what they do.
Numeric Input Conversions : Details of conversions for reading numbers.
String Input Conversions : Details of conversions for reading strings.
Dynamic String Input : String conversions that malloc
the buffer.
Other Input Conversions : Details of miscellaneous other conversions.
Formatted Input Functions : Descriptions of the actual functions.
Variable Arguments Input : vscanf
and friends.
Stream Buffering
Buffering Concepts : Terminology is defined here.
Flushing Buffers : How to ensure that output buffers are flushed.
Controlling Buffering : How to specify what kind of buffering to use.
Other Kinds of Streams
String Streams : Streams that get data from or put data in
a string or memory buffer.
Obstack Streams : Streams that store data in an obstack.
Custom Streams : Defining your own streams with an arbitrary
input data source and/or output data sink.
Custom Streams
Streams and Cookies : The cookie records where to fetch or
store data that is read or written.
Hook Functions : How you should define the four hook
functions that a custom stream needs.
Formatted Messages
Printing Formatted Messages : The fmtmsg
function.
Adding Severity Classes : Add more severity classes.
Example : How to use fmtmsg
and addseverity
.
Low-Level I/O
Opening and Closing Files : How to open and close file
descriptors.
I/O Primitives : Reading and writing data.
File Position Primitive : Setting a descriptor's file
position.
Descriptors and Streams : Converting descriptor to stream
or vice-versa.
Stream/Descriptor Precautions : Precautions needed if you use both
descriptors and streams.
Scatter-Gather : Fast I/O to discontinuous buffers.
Memory-mapped I/O : Using files like memory.
Waiting for I/O : How to check for input or output
on multiple file descriptors.
Synchronizing I/O : Making sure all I/O actions completed.
Asynchronous I/O : Perform I/O in parallel.
Control Operations : Various other operations on file
descriptors.
Duplicating Descriptors : Fcntl commands for duplicating
file descriptors.
Descriptor Flags : Fcntl commands for manipulating
flags associated with file
descriptors.
File Status Flags : Fcntl commands for manipulating
flags associated with open files.
File Locks : Fcntl commands for implementing
file locking.
Interrupt Input : Getting an asynchronous signal when
input arrives.
IOCTLs : Generic I/O Control operations.
Stream/Descriptor Precautions
Linked Channels : Dealing with channels sharing a file position.
Independent Channels : Dealing with separately opened, unlinked channels.
Cleaning Streams : Cleaning a stream makes it safe to use
another channel.
Asynchronous I/O
Asynchronous Reads/Writes : Asynchronous Read and Write Operations.
Status of AIO Operations : Getting the Status of AIO Operations.
Synchronizing AIO Operations : Getting into a consistent state.
Cancel AIO Operations : Cancellation of AIO Operations.
Configuration of AIO : How to optimize the AIO implementation.
File Status Flags
Access Modes : Whether the descriptor can read or write.
Open-time Flags : Details of open
.
Operating Modes : Special modes to control I/O operations.
Getting File Status Flags : Fetching and changing these flags.
File System Interface
Working Directory : This is used to resolve relative
file names.
Accessing Directories : Finding out what files a directory
contains.
Working with Directory Trees : Apply actions to all files or a selectable
subset of a directory hierarchy.
Hard Links : Adding alternate names to a file.
Symbolic Links : A file that ``points to'' a file name.
Deleting Files : How to delete a file, and what that means.
Renaming Files : Changing a file's name.
Creating Directories : A system call just for creating a directory.
File Attributes : Attributes of individual files.
Making Special Files : How to create special files.
Temporary Files : Naming and creating temporary files.
Accessing Directories
Directory Entries : Format of one directory entry.
Opening a Directory : How to open a directory stream.
Reading/Closing Directory : How to read directory entries from the stream.
Simple Directory Lister : A very simple directory listing program.
Random Access Directory : Rereading part of the directory
already read with the same stream.
Scanning Directory Content : Get entries for user selected subset of
contents in given directory.
Simple Directory Lister Mark II : Revised version of the program.
File Attributes
Attribute Meanings : The names of the file attributes,
and what their values mean.
Reading Attributes : How to read the attributes of a file.
Testing File Type : Distinguishing ordinary files,
directories, links...
File Owner : How ownership for new files is determined,
and how to change it.
Permission Bits : How information about a file's access
mode is stored.
Access Permission : How the system decides who can access a file.
Setting Permissions : How permissions for new files are assigned,
and how to change them.
Testing File Access : How to find out if your process can
access a file.
File Times : About the time attributes of a file.
File Size : Manually changing the size of a file.
Pipes and FIFOs
Creating a Pipe : Making a pipe with the pipe
function.
Pipe to a Subprocess : Using a pipe to communicate with a
child process.
FIFO Special Files : Making a FIFO special file.
Pipe Atomicity : When pipe (or FIFO) I/O is atomic.
Sockets
Socket Concepts : Basic concepts you need to know about.
Communication Styles : Stream communication, datagrams and other styles.
Socket Addresses : How socket names (``addresses'') work.
Interface Naming : Identifying specific network interfaces.
Local Namespace : Details about the local namespace.
Internet Namespace : Details about the Internet namespace.
Misc Namespaces : Other namespaces not documented fully here.
Open/Close Sockets : Creating sockets and destroying them.
Connections : Operations on sockets with connection state.
Datagrams : Operations on datagram sockets.
Inetd : Inetd is a daemon that starts servers on request.
The most convenient way to write a server
is to make it work with Inetd.
Socket Options : Miscellaneous low-level socket options.
Networks Database : Accessing the database of network names.
Socket Addresses
Address Formats : About struct sockaddr
.
Setting Address : Binding an address to a socket.
Reading Address : Reading the address of a socket.
Local Namespace
Concepts : What you need to understand.
Details : Address format, symbolic names, etc.
Example : Example of creating a socket.
Internet Namespace
Internet Address Formats : How socket addresses are specified in the
Internet namespace.
Host Addresses : All about host addresses of Internet host.
Protocols Database : Referring to protocols by name.
Ports : Internet port numbers.
Services Database : Ports may have symbolic names.
Byte Order : Different hosts may use different byte
ordering conventions; you need to
canonicalize host address and port number.
Inet Example : Putting it all together.
Host Addresses
Abstract Host Addresses : What a host number consists of.
Data type : Data type for a host number.
Functions : Functions to operate on them.
Names : Translating host names to host numbers.
Open/Close Sockets
Creating a Socket : How to open a socket.
Closing a Socket : How to close a socket.
Socket Pairs : These are created like pipes.
Connections
Connecting : What the client program must do.
Listening : How a server program waits for requests.
Accepting Connections : What the server does when it gets a request.
Who is Connected : Getting the address of the
other side of a connection.
Transferring Data : How to send and receive data.
Byte Stream Example : An example program: a client for communicating
over a byte stream socket in the Internet namespace.
Server Example : A corresponding server program.
Out-of-Band Data : This is an advanced feature.
Transferring Data
Sending Data : Sending data with send
.
Receiving Data : Reading data with recv
.
Socket Data Options : Using send
and recv
.
Datagrams
Sending Datagrams : Sending packets on a datagram socket.
Receiving Datagrams : Receiving packets on a datagram socket.
Datagram Example : An example program: packets sent over a
datagram socket in the local namespace.
Example Receiver : Another program, that receives those packets.
Inetd
Inetd Servers :
Configuring Inetd :
Socket Options
Socket Option Functions : The basic functions for setting and getting
socket options.
Socket-Level Options : Details of the options at the socket level.
Low-Level Terminal Interface
Is It a Terminal : How to determine if a file is a terminal
device, and what its name is.
I/O Queues : About flow control and typeahead.
Canonical or Not : Two basic styles of input processing.
Terminal Modes : How to examine and modify flags controlling
details of terminal I/O: echoing,
signals, editing. Posix.
BSD Terminal Modes : BSD compatible terminal mode setting
Line Control : Sending break sequences, clearing
terminal buffers ...
Noncanon Example : How to read single characters without echo.
Pseudo-Terminals : How to open a pseudo-terminal.
Terminal Modes
Mode Data Types : The data type struct termios
and
related types.
Mode Functions : Functions to read and set the terminal
attributes.
Setting Modes : The right way to set terminal attributes
reliably.
Input Modes : Flags controlling low-level input handling.
Output Modes : Flags controlling low-level output handling.
Control Modes : Flags controlling serial port behavior.
Local Modes : Flags controlling high-level input handling.
Line Speed : How to read and set the terminal line speed.
Special Characters : Characters that have special effects,
and how to change them.
Noncanonical Input : Controlling how long to wait for input.
Special Characters
Editing Characters : Special characters that terminate lines and
delete text, and other editing functions.
Signal Characters : Special characters that send or raise signals
to or for certain classes of processes.
Start/Stop Characters : Special characters that suspend or resume
suspended output.
Other Special : Other special characters for BSD systems:
they can discard output, and print status.
Pseudo-Terminals
Allocation : Allocating a pseudo terminal.
Pseudo-Terminal Pairs : How to open both sides of a
pseudo-terminal in a single operation.
Syslog
Overview of Syslog : Overview of a system's Syslog facility
Submitting Syslog Messages : Functions to submit messages to Syslog
Submitting Syslog Messages
openlog : Open connection to Syslog
syslog; vsyslog : Submit message to Syslog
closelog : Close connection to Syslog
setlogmask : Cause certain messages to be ignored
Syslog Example : Example of all of the above
Mathematics
Mathematical Constants : Precise numeric values for often-used
constants.
Trig Functions : Sine, cosine, tangent, and friends.
Inverse Trig Functions : Arcsine, arccosine, etc.
Exponents and Logarithms : Also pow and sqrt.
Hyperbolic Functions : sinh, cosh, tanh, etc.
Special Functions : Bessel, gamma, erf.
Errors in Math Functions : Known Maximum Errors in Math Functions.
Pseudo-Random Numbers : Functions for generating pseudo-random
numbers.
FP Function Optimizations : Fast code or small code.
Pseudo-Random Numbers
ISO Random : rand
and friends.
BSD Random : random
and friends.
SVID Random : drand48
and friends.
Arithmetic
Integers : Basic integer types and concepts
Integer Division : Integer division with guaranteed rounding.
Floating Point Numbers : Basic concepts. IEEE 754.
Floating Point Classes : The five kinds of floating-point number.
Floating Point Errors : When something goes wrong in a calculation.
Rounding : Controlling how results are rounded.
Control Functions : Saving and restoring the FPU's state.
Arithmetic Functions : Fundamental operations provided by the library.
Complex Numbers : The types. Writing complex constants.
Operations on Complex : Projection, conjugation, decomposition.
Parsing of Numbers : Converting strings to numbers.
System V Number Conversion : An archaic way to convert numbers to strings.
Floating Point Errors
FP Exceptions : IEEE 754 math exceptions and how to detect them.
Infinity and NaN : Special values returned by calculations.
Status bit operations : Checking for exceptions after the fact.
Math Error Reporting : How the math functions report errors.
Arithmetic Functions
Absolute Value : Absolute values of integers and floats.
Normalization Functions : Extracting exponents and putting them back.
Rounding Functions : Rounding floats to integers.
Remainder Functions : Remainders on division, precisely defined.
FP Bit Twiddling : Sign bit adjustment. Adding epsilon.
FP Comparison Functions : Comparisons without risk of exceptions.
Misc FP Arithmetic : Max, min, positive difference, multiply-add.
Parsing of Numbers
Parsing of Integers : Functions for conversion of integer values.
Parsing of Floats : Functions for conversion of floating-point
values.
Date and Time
Time Basics : Concepts and definitions.
Elapsed Time : Data types to represent elapsed times
Processor And CPU Time : Time a program has spent executing.
Calendar Time : Manipulation of ``real'' dates and times.
Setting an Alarm : Sending a signal after a specified time.
Sleeping : Waiting for a period of time.
Processor And CPU Time
CPU Time : The clock
function.
Processor Time : The times
function.
Calendar Time
Simple Calendar Time : Facilities for manipulating calendar time.
High-Resolution Calendar : A time representation with greater precision.
Broken-down Time : Facilities for manipulating local time.
High Accuracy Clock : Maintaining a high accuracy system clock.
Formatting Calendar Time : Converting times to strings.
Parsing Date and Time : Convert textual time and date information back
into broken-down time values.
TZ Variable : How users specify the time zone.
Time Zone Functions : Functions to examine or specify the time zone.
Time Functions Example : An example program showing use of some of
the time functions.
Parsing Date and Time
Low-Level Time String Parsing : Interpret string according to given format.
General Time String Parsing : User-friendly function to parse data and
time strings.
Resource Usage And Limitation
Resource Usage : Measuring various resources used.
Limits on Resources : Specifying limits on resource usage.
Priority : Reading or setting process run priority.
Memory Resources : Querying memory available resources.
Processor Resources : Learn about the processors available.
Priority
Absolute Priority : The first tier of priority. Posix
Realtime Scheduling : Scheduling among the process nobility
Basic Scheduling Functions : Get/set scheduling policy, priority
Traditional Scheduling : Scheduling among the vulgar masses
Traditional Scheduling
Traditional Scheduling Intro :
Traditional Scheduling Functions :
Memory Resources
Memory Subsystem : Overview about traditional Unix memory handling.
Query Memory Parameters : How to get information about the memory
subsystem?
Non-Local Exits
Intro : When and how to use these facilities.
Details : Functions for non-local exits.
Non-Local Exits and Signals : Portability issues.
System V contexts : Complete context control a la System V.
Signal Handling
Concepts of Signals : Introduction to the signal facilities.
Standard Signals : Particular kinds of signals with
standard names and meanings.
Signal Actions : Specifying what happens when a
particular signal is delivered.
Defining Handlers : How to write a signal handler function.
Interrupted Primitives : Signal handlers affect use of open
,
read
, write
and other functions.
Generating Signals : How to send a signal to a process.
Blocking Signals : Making the system hold signals temporarily.
Waiting for a Signal : Suspending your program until a signal
arrives.
Signal Stack : Using a Separate Signal Stack.
BSD Signal Handling : Additional functions for backward
compatibility with BSD.
Concepts of Signals
Kinds of Signals : Some examples of what can cause a signal.
Signal Generation : Concepts of why and how signals occur.
Delivery of Signal : Concepts of what a signal does to the
process.
Standard Signals
Program Error Signals : Used to report serious program errors.
Termination Signals : Used to interrupt and/or terminate the
program.
Alarm Signals : Used to indicate expiration of timers.
Asynchronous I/O Signals : Used to indicate input is available.
Job Control Signals : Signals used to support job control.
Operation Error Signals : Used to report operational system errors.
Miscellaneous Signals : Miscellaneous Signals.
Signal Messages : Printing a message describing a signal.
Signal Actions
Basic Signal Handling : The simple signal
function.
Advanced Signal Handling : The more powerful sigaction
function.
Signal and Sigaction : How those two functions interact.
Sigaction Function Example : An example of using the sigaction function.
Flags for Sigaction : Specifying options for signal handling.
Initial Signal Actions : How programs inherit signal actions.
Defining Handlers
Handler Returns : Handlers that return normally, and what
this means.
Termination in Handler : How handler functions terminate a program.
Longjmp in Handler : Nonlocal transfer of control out of a
signal handler.
Signals in Handler : What happens when signals arrive while
the handler is already occupied.
Merged Signals : When a second signal arrives before the
first is handled.
Nonreentrancy : Do not call any functions unless you know they
are reentrant with respect to signals.
Atomic Data Access : A single handler can run in the middle of
reading or writing a single object.
Atomic Data Access
Non-atomic Example : A program illustrating interrupted access.
Types : Data types that guarantee no interruption.
Usage : Proving that interruption is harmless.
Generating Signals
Signaling Yourself : A process can send a signal to itself.
Signaling Another Process : Send a signal to another process.
Permission for kill : Permission for using kill
.
Kill Example : Using kill
for Communication.
Blocking Signals
Why Block : The purpose of blocking signals.
Signal Sets : How to specify which signals to
block.
Process Signal Mask : Blocking delivery of signals to your
process during normal execution.
Testing for Delivery : Blocking to Test for Delivery of
a Signal.
Blocking for Handler : Blocking additional signals while a
handler is being run.
Checking for Pending Signals : Checking for Pending Signals
Remembering a Signal : How you can get almost the same
effect as blocking a signal, by
handling it and setting a flag
to be tested later.
Waiting for a Signal
Using Pause : The simple way, using pause
.
Pause Problems : Why the simple way is often not very good.
Sigsuspend : Reliably waiting for a specific signal.
BSD Signal Handling
BSD Handler : BSD Function to Establish a Handler.
Blocking in BSD : BSD Functions for Blocking Signals.
Program Basics
Program Arguments : Parsing your program's command-line arguments.
Environment Variables : Less direct parameters affecting your program
System Calls : Requesting service from the system
Program Termination : Telling the system you're done; return status
Program Arguments
Argument Syntax : By convention, options start with a hyphen.
Parsing Program Arguments : Ways to parse program options and arguments.
Parsing Program Arguments
Getopt : Parsing program options using getopt
.
Argp : Parsing program options using argp_parse
.
Suboptions : Some programs need more detailed options.
Suboptions Example : This shows how it could be done for mount
.
Environment Variables
Environment Access : How to get and set the values of
environment variables.
Standard Environment : These environment variables have
standard interpretations.
Program Termination
Normal Termination : If a program calls exit
, a
process terminates normally.
Exit Status : The exit status
provides information
about why the process terminated.
Cleanups on Exit : A process can run its own cleanup
functions upon normal termination.
Aborting a Program : The abort
function causes
abnormal program termination.
Termination Internals : What happens when a process terminates.
Processes
Running a Command : The easy way to run another program.
Process Creation Concepts : An overview of the hard way to do it.
Process Identification : How to get the process ID of a process.
Creating a Process : How to fork a child process.
Executing a File : How to make a process execute another program.
Process Completion : How to tell when a child process has completed.
Process Completion Status : How to interpret the status value
returned from a child process.
BSD Wait Functions : More functions, for backward compatibility.
Process Creation Example : A complete example program.
Job Control
Concepts of Job Control : Jobs can be controlled by a shell.
Job Control is Optional : Not all POSIX systems support job control.
Controlling Terminal : How a process gets its controlling terminal.
Access to the Terminal : How processes share the controlling terminal.
Orphaned Process Groups : Jobs left after the user logs out.
Implementing a Shell : What a shell must do to implement job control.
Functions for Job Control : Functions to control process groups.
Implementing a Shell
Data Structures : Introduction to the sample shell.
Initializing the Shell : What the shell must do to take
responsibility for job control.
Launching Jobs : Creating jobs to execute commands.
Foreground and Background : Putting a job in foreground of background.
Stopped and Terminated Jobs : Reporting job status.
Continuing Stopped Jobs : How to continue a stopped job in
the foreground or background.
Missing Pieces : Other parts of the shell.
Functions for Job Control
Identifying the Terminal : Determining the controlling terminal's name.
Process Group Functions : Functions for manipulating process groups.
Terminal Access Functions : Functions for controlling terminal access.
Name Service Switch
NSS Basics : What is this NSS good for.
NSS Configuration File : Configuring NSS.
NSS Module Internals : How does it work internally.
Extending NSS : What to do to add services or databases.
NSS Configuration File
Services in the NSS configuration : Service names in the NSS configuration.
Actions in the NSS configuration : React appropriately to the lookup result.
Notes on NSS Configuration File : Things to take care about while
configuring NSS.
NSS Module Internals
NSS Module Names : Construction of the interface function of
the NSS modules.
NSS Modules Interface : Programming interface in the NSS module
functions.
Extending NSS
Adding another Service to NSS : What is to do to add a new service.
NSS Module Function Internals : Guidelines for writing new NSS
service functions.
Users and Groups
User and Group IDs : Each user has a unique numeric ID;
likewise for groups.
Process Persona : The user IDs and group IDs of a process.
Why Change Persona : Why a program might need to change
its user and/or group IDs.
How Change Persona : Changing the user and group IDs.
Reading Persona : How to examine the user and group IDs.
Setting User ID : Functions for setting the user ID.
Setting Groups : Functions for setting the group IDs.
Enable/Disable Setuid : Turning setuid access on and off.
Setuid Program Example : The pertinent parts of one sample program.
Tips for Setuid : How to avoid granting unlimited access.
Who Logged In : Getting the name of the user who logged in,
or of the real user ID of the current process.
User Accounting Database : Keeping information about users and various
actions in databases.
User Database : Functions and data structures for
accessing the user database.
Group Database : Functions and data structures for
accessing the group database.
Database Example : Example program showing the use of database
inquiry functions.
Netgroup Database : Functions for accessing the netgroup database.
User Accounting Database
Manipulating the Database : Scanning and modifying the user
accounting database.
XPG Functions : A standardized way for doing the same thing.
Logging In and Out : Functions from BSD that modify the user
accounting database.
User Database
User Data Structure : What each user record contains.
Lookup User : How to look for a particular user.
Scanning All Users : Scanning the list of all users, one by one.
Writing a User Entry : How a program can rewrite a user's record.
Group Database
Group Data Structure : What each group record contains.
Lookup Group : How to look for a particular group.
Scanning All Groups : Scanning the list of all groups.
Netgroup Database
Netgroup Data : Data in the Netgroup database and where
it comes from.
Lookup Netgroup : How to look for a particular netgroup.
Netgroup Membership : How to test for netgroup membership.
System Management
Host Identification : Determining the name of the machine.
Platform Type : Determining operating system and basic
machine type
Filesystem Handling : Controlling/querying mounts
System Parameters : Getting and setting various system parameters
Filesystem Handling
Mount Information : What is or could be mounted?
Mount-Unmount-Remount : Controlling what is mounted and how
Mount Information
fstab : The fstab
file
mtab : The mtab
file
Other Mount Information : Other (non-libc) sources of mount information
System Configuration
General Limits : Constants and functions that describe
various process-related limits that have
one uniform value for any given machine.
System Options : Optional POSIX features.
Version Supported : Version numbers of POSIX.1 and POSIX.2.
Sysconf : Getting specific configuration values
of general limits and system options.
Minimums : Minimum values for general limits.
Limits for Files : Size limitations that pertain to individual files.
These can vary between file systems
or even from file to file.
Options for Files : Optional features that some files may support.
File Minimums : Minimum values for file limits.
Pathconf : Getting the limit values for a particular file.
Utility Limits : Capacity limits of some POSIX.2 utility programs.
Utility Minimums : Minimum allowable values of those limits.
String Parameters : Getting the default search path.
Sysconf
Sysconf Definition : Detailed specifications of sysconf
.
Constants for Sysconf : The list of parameters sysconf
can read.
Examples of Sysconf : How to use sysconf
and the parameter
macros properly together.
Cryptographic Functions
Legal Problems : This software can get you locked up, or worse.
getpass : Prompting the user for a password.
crypt : A one-way function for UNIX passwords.
DES Encryption : Routines for DES encryption.
Debugging Support
Backtraces : Obtaining and printing a back trace of the
current stack.
Language Features
Consistency Checking : Using assert
to abort if
something ``impossible'' happens.
Variadic Functions : Defining functions with varying numbers
of args.
Null Pointer Constant : The macro NULL
.
Important Data Types : Data types for object sizes.
Data Type Measurements : Parameters of data type representations.
Variadic Functions
Why Variadic : Reasons for making functions take
variable arguments.
How Variadic : How to define and call variadic functions.
Variadic Example : A complete example.
How Variadic
Variadic Prototypes : How to make a prototype for a function
with variable arguments.
Receiving Arguments : Steps you must follow to access the
optional argument values.
How Many Arguments : How to decide whether there are more arguments.
Calling Variadics : Things you need to know about calling
variable arguments functions.
Argument Macros : Detailed specification of the macros
for accessing variable arguments.
Old Varargs : The pre-ISO way of defining variadic functions.
Data Type Measurements
Width of Type : How many bits does an integer type hold?
Range of Type : What are the largest and smallest values
that an integer type can hold?
Floating Type Macros : Parameters that measure the floating point types.
Structure Measurement : Getting measurements on structure types.
Floating Type Macros
Floating Point Concepts : Definitions of terminology.
Floating Point Parameters : Details of specific macros.
IEEE Floating Point : The measurements for one common
representation.
Installation
Configuring and compiling : How to compile and test GNU libc.
Running make install : How to install it once you've got it compiled.
Tools for Compilation : You'll need these first.
Supported Configurations : What it runs on, what it doesn't.
Linux : Specific advice for Linux systems.
Reporting Bugs : So they'll get fixed.
Maintenance
Source Layout : How to add new functions or header files
to the GNU C library.
Porting : How to port the GNU C library to
a new machine or operating system.
Porting
Hierarchy Conventions : The layout of the sysdeps
hierarchy.
Porting to Unix : Porting the library to an average
Unix-like system.