[Top] | [Contents] | [Index] | [ ? ] |
This file documents the GNU C library.
This is Edition 0.10, last updated 2001-07-06, of The GNU C Library Reference Manual, for Version 2.3.x.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being "Free Software Needs Free Documentation" and "GNU Lesser General Public License", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled "GNU Free Documentation License".
(a) The FSF's Front-Cover Text is:
A GNU Manual
(b) The FSF's Back-Cover Text is:
You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.
This is Edition 0.10, last updated 2001-07-06, of The GNU C Library Reference Manual, for Version 2.3.x of the GNU C Library.
1. Introduction | Purpose of the GNU C Library. | |
2. Error Reporting | How library functions report errors. | |
3. Virtual Memory Allocation And Paging | Allocating virtual memory and controlling paging. | |
4. Character Handling | Character testing and conversion functions. | |
5. String and Array Utilities | Utilities for copying and comparing strings and arrays. | |
6. Character Set Handling | Support for extended character sets. | |
7. Locales and Internationalization | The country and language can affect the behavior of library functions. | |
8. Message Translation | How to make the program speak the user's language. | |
9. Searching and Sorting | General searching and sorting functions. | |
10. Pattern Matching | Matching shell "globs" and regular expressions. | |
11. Input/Output Overview | Introduction to the I/O facilities. | |
12. Input/Output on Streams | High-level, portable I/O facilities. | |
13. Low-Level Input/Output | Low-level, less portable I/O. | |
14. File System Interface | Functions for manipulating files. | |
15. Pipes and FIFOs | A simple interprocess communication mechanism. | |
16. Sockets | A more complicated IPC mechanism, with networking support. | |
17. Low-Level Terminal Interface | How to change the characteristics of a terminal device. | |
18. Syslog | System logging and messaging. | |
19. Mathematics | Math functions, useful constants, random numbers. | |
20. Arithmetic Functions | Low level arithmetic functions. | |
21. Date and Time | Functions for getting the date and time and formatting them nicely. | |
22. Resource Usage And Limitation | Functions for examining resource usage and getting and setting limits. | |
23. Non-Local Exits | Jumping out of nested function calls. | |
24. Signal Handling | How to send, block, and handle signals. | |
25. The Basic Program/System Interface | Writing the beginning and end of your program. | |
26. Processes | How to create processes and run other programs. | |
27. Job Control | All about process groups and sessions. | |
28. System Databases and Name Service Switch | Accessing system databases. | |
29. Users and Groups | How users are identified and classified. | |
30. System Management | Controlling the system and getting information about it. | |
31. System Configuration Parameters | Parameters describing operating system limits. | |
32. DES Encryption and Password Handling | DES encryption and password handling. | |
33. Debugging support | Functions to help debugging applications. | |
Add-ons | ||
---|---|---|
34. POSIX Threads | The standard threads library. | |
Appendices | ||
A. C Language Facilities in the Library | C language features provided by the library. | |
B. Summary of Library Facilities | A summary showing the syntax, header file, and derivation of each library feature. | |
C. Installing the GNU C Library | How to install the GNU C library. | |
D. Library Maintenance | How to enhance and port the GNU C Library. | |
E. Contributors to the GNU C Library | Who wrote what parts of the GNU C library. | |
F. Free Software Needs Free Documentation | ||
G. GNU Lesser General Public License | The GNU Lesser General Public License says how you can copy and share the GNU C Library. | |
H. GNU Free Documentation License | This manual is under the GNU Free Documentation License. | |
Indices | ||
Concept Index | Index of concepts and names. | |
Type Index | Index of types and type qualifiers. | |
Function and Macro Index | Index of functions and function-like macros. | |
Variable and Constant Macro Index | Index of variables and variable-like macros. | |
Program and File Index | Index of programs and files. | |
--- The Detailed Node Listing --- Introduction | ||
1.1 Getting Started | What this manual is for and how to use it. | |
1.2 Standards and Portability | Standards and sources upon which the GNU C library is based. | |
1.3 Using the Library | Some practical uses for the library. | |
1.4 Roadmap to the Manual | Overview of the remaining chapters in this manual. | |
Standards and Portability | ||
1.2.1 ISO C | The international standard for the C programming language. | |
1.2.2 POSIX (The Portable Operating System Interface) | The ISO/IEC 9945 (aka IEEE 1003) standards for operating systems. | |
1.2.3 Berkeley Unix | BSD and SunOS. | |
1.2.4 SVID (The System V Interface Description) | The System V Interface Description. | |
1.2.5 XPG (The X/Open Portability Guide) | The X/Open Portability Guide. | |
Using the Library | ||
1.3.1 Header Files | How to include the header files in your programs. | |
1.3.2 Macro Definitions of Functions | Some functions in the library may really be implemented as macros. | |
1.3.3 Reserved Names | The C standard reserves some names for the library, and some for users. | |
1.3.4 Feature Test Macros | How to control what names are defined. | |
Error Reporting | ||
2.1 Checking for Errors | How errors are reported by library functions. | |
2.2 Error Codes | Error code macros; all of these expand into integer constant values. | |
2.3 Error Messages | Mapping error codes onto error messages. | |
Memory | ||
3.1 Process Memory Concepts | An introduction to concepts and terminology. | |
3.2 Allocating Storage For Program Data | Allocating storage for your program data | |
3.4 Locking Pages | Preventing page faults | |
3.3 Resizing the Data Segment | brk , sbrk
| |
Memory Allocation | ||
3.2.1 Memory Allocation in C Programs | How to get different kinds of allocation in C. | |
3.2.2 Unconstrained Allocation | The malloc facility allows fully general
dynamic allocation.
| |
3.2.3 Allocation Debugging | Finding memory leaks and not freed memory. | |
3.2.4 Obstacks | Obstacks are less general than malloc but more efficient and convenient. | |
3.2.5 Automatic Storage with Variable Size | Allocation of variable-sized blocks of automatic storage that are freed when the calling function returns. | |
Unconstrained Allocation | ||
3.2.2.1 Basic Memory Allocation | Simple use of malloc .
| |
3.2.2.2 Examples of malloc | Examples of malloc . xmalloc .
| |
3.2.2.3 Freeing Memory Allocated with malloc | Use free to free a block you
got with malloc .
| |
3.2.2.4 Changing the Size of a Block | Use realloc to make a block
bigger or smaller.
| |
3.2.2.5 Allocating Cleared Space | Use calloc to allocate a
block and clear it.
| |
3.2.2.6 Efficiency Considerations for malloc | Efficiency considerations in use of these functions. | |
3.2.2.7 Allocating Aligned Memory Blocks | Allocating specially aligned memory. | |
3.2.2.8 Malloc Tunable Parameters | Use mallopt to adjust allocation
parameters.
| |
3.2.2.9 Heap Consistency Checking | Automatic checking for errors. | |
3.2.2.10 Memory Allocation Hooks | You can use these hooks for debugging
programs that use malloc .
| |
3.2.2.11 Statistics for Memory Allocation with malloc | Getting information about how much memory your program is using. | |
3.2.2.12 Summary of malloc -Related Functions | Summary of malloc and related functions.
| |
Allocation Debugging | ||
3.2.3.1 How to install the tracing functionality | ||
3.2.3.2 Example program excerpts | Example programs excerpts. | |
3.2.3.3 Some more or less clever ideas | ||
3.2.3.4 Interpreting the traces | What do all these lines mean? | |
Obstacks | ||
3.2.4.1 Creating Obstacks | How to declare an obstack in your program. | |
3.2.4.2 Preparing for Using Obstacks | Preparations needed before you can use obstacks. | |
3.2.4.3 Allocation in an Obstack | Allocating objects in an obstack. | |
3.2.4.4 Freeing Objects in an Obstack | Freeing objects in an obstack. | |
3.2.4.5 Obstack Functions and Macros | The obstack functions are both functions and macros. | |
3.2.4.6 Growing Objects | Making an object bigger by stages. | |
3.2.4.7 Extra Fast Growing Objects | Extra-high-efficiency (though more complicated) growing objects. | |
3.2.4.8 Status of an Obstack | Inquiries about the status of an obstack. | |
3.2.4.9 Alignment of Data in Obstacks | Controlling alignment of objects in obstacks. | |
3.2.4.10 Obstack Chunks | How obstacks obtain and release chunks; efficiency considerations. | |
3.2.4.11 Summary of Obstack Functions | ||
Variable Size Automatic | ||
3.2.5.1 alloca Example | Example of using alloca .
| |
3.2.5.2 Advantages of alloca | Reasons to use alloca .
| |
3.2.5.3 Disadvantages of alloca | Reasons to avoid alloca .
| |
3.2.5.4 GNU C Variable-Size Arrays | Only in GNU C, here is an alternative method of allocating dynamically and freeing automatically. | |
Locking Pages | ||
3.4.1 Why Lock Pages | Reasons to read this section. | |
3.4.2 Locked Memory Details | Everything you need to know locked memory | |
3.4.3 Functions To Lock And Unlock Pages | Here's how to do it. | |
Character Handling | ||
4.1 Classification of Characters | Testing whether characters are letters, digits, punctuation, etc. | |
4.2 Case Conversion | Case mapping, and the like. | |
4.3 Character class determination for wide characters | ||
4.4 Notes on using the wide character classes | ||
4.5 Mapping of wide characters. | ||
String and Array Utilities | ||
5.1 Representation of Strings | Introduction to basic concepts. | |
5.2 String and Array Conventions | Whether to use a string function or an arbitrary array function. | |
5.3 String Length | Determining the length of a string. | |
5.4 Copying and Concatenation | Functions to copy the contents of strings and arrays. | |
5.5 String/Array Comparison | Functions for byte-wise and character-wise comparison. | |
5.6 Collation Functions | Functions for collating strings. | |
5.7 Search Functions | Searching for a specific element or substring. | |
5.8 Finding Tokens in a String | Splitting a string into tokens by looking for delimiters. | |
5.9 strfry | Function for flash-cooking a string. | |
5.10 Trivial Encryption | Obscuring data. | |
5.11 Encode Binary Data | Encoding and Decoding of Binary Data. | |
5.12 Argz and Envz Vectors | Null-separated string vectors. | |
Argz and Envz Vectors | ||
5.12.1 Argz Functions | Operations on argz vectors. | |
5.12.2 Envz Functions | Additional operations on environment vectors. | |
Character Set Handling | ||
6.1 Introduction to Extended Characters | ||
6.2 Overview about Character Handling Functions | ||
6.3 Restartable Multibyte Conversion Functions | Restartable multibyte conversion Functions. | |
6.4 Non-reentrant Conversion Function | ||
6.5 Generic Charset Conversion | ||
Restartable multibyte conversion | ||
6.3.1 Selecting the conversion and its properties | ||
6.3.2 Representing the state of the conversion | ||
6.3.3 Converting Single Characters | ||
6.3.4 Converting Multibyte and Wide Character Strings | ||
6.3.5 A Complete Multibyte Conversion Example | ||
Non-reentrant Conversion | ||
6.4.1 Non-reentrant Conversion of Single Characters | ||
6.4.2 Non-reentrant Conversion of Strings | ||
6.4.3 States in Non-reentrant Functions | ||
Generic Charset Conversion | ||
6.5.1 Generic Character Set Conversion Interface | ||
6.5.2 A complete iconv example | ||
6.5.3 Some Details about other iconv Implementations | ||
6.5.4 The iconv Implementation in the GNU C library | ||
Locales | ||
7.1 What Effects a Locale Has | Actions affected by the choice of locale. | |
7.2 Choosing a Locale | How the user specifies a locale. | |
7.3 Categories of Activities that Locales Affect | Different purposes for which you can select a locale. | |
7.4 How Programs Set the Locale | How a program specifies the locale with library functions. | |
7.5 Standard Locales | Locale names available on all systems. | |
7.6 Accessing Locale Information | How to access the information for the locale. | |
7.7 A dedicated function to format numbers | ||
7.8 Yes-or-No Questions | Check a Response against the locale. | |
Locale Information | ||
7.6.1 localeconv : It is portable but … | ISO C's localeconv .
| |
7.6.2 Pinpoint Access to Locale Data | X/Open's nl_langinfo .
| |
The Lame Way to Locale Data | ||
7.6.1.1 Generic Numeric Formatting Parameters | Parameters for formatting numbers and currency amounts. | |
7.6.1.2 Printing the Currency Symbol | How to print the symbol that identifies an amount of money (e.g. `$'). | |
7.6.1.3 Printing the Sign of a Monetary Amount | How to print the (positive or negative) sign for a monetary amount, if one exists. | |
Message Translation | ||
8.1 X/Open Message Catalog Handling | The catgets family of functions.
| |
8.2 The Uniforum approach to Message Translation | The gettext family of functions.
| |
Message catalogs a la X/Open | ||
8.1.1 The catgets function family | ||
8.1.2 Format of the message catalog files | ||
8.1.3 Generate Message Catalogs files | How to generate message catalogs files which can be used by the functions. | |
8.1.4 How to use the catgets interface | ||
The Uniforum approach | ||
8.2.1 The gettext family of functions | ||
8.2.2 Programs to handle message catalogs for gettext | ||
Message catalogs with gettext | ||
8.2.1.1 What has to be done to translate a message? | ||
8.2.1.2 How to determine which catalog to be used | ||
8.2.1.3 Additional functions for more complicated situations | ||
8.2.1.4 How to specify the output character set gettext uses | ||
8.2.1.5 How to use gettext in GUI programs | ||
8.2.1.6 User influence on gettext | The possibilities of the user to influence
the way gettext works.
| |
Searching and Sorting | ||
9.1 Defining the Comparison Function | Defining how to compare two objects. Since the sort and search facilities are general, you have to specify the ordering. | |
9.2 Array Search Function | The bsearch function.
| |
9.3 Array Sort Function | The qsort function.
| |
9.4 Searching and Sorting Example | An example program. | |
9.5 The hsearch function. | ||
9.6 The tsearch function. | ||
Pattern Matching | ||
10.1 Wildcard Matching | Matching a wildcard pattern against a single string. | |
10.2 Globbing | Finding the files that match a wildcard pattern. | |
10.3 Regular Expression Matching | Matching regular expressions against strings. | |
10.4 Shell-Style Word Expansion | Expanding shell variables, nested commands, arithmetic, and wildcards. This is what the shell does with shell commands. | |
Globbing | ||
10.2.1 Calling glob | Basic use of glob .
| |
10.2.2 Flags for Globbing | Flags that enable various options in glob .
| |
10.2.3 More Flags for Globbing | GNU specific extensions to glob .
| |
Regular Expressions | ||
10.3.1 POSIX Regular Expression Compilation | Using regcomp to prepare to match.
| |
10.3.2 Flags for POSIX Regular Expressions | Syntax variations for regcomp .
| |
10.3.3 Matching a Compiled POSIX Regular Expression | Using regexec to match the compiled
pattern that you get from regcomp .
| |
10.3.4 Match Results with Subexpressions | Finding which parts of the string were matched. | |
10.3.5 Complications in Subexpression Matching | Find points of which parts were matched. | |
10.3.6 POSIX Regexp Matching Cleanup | Freeing storage; reporting errors. | |
Word Expansion | ||
10.4.1 The Stages of Word Expansion | What word expansion does to a string. | |
10.4.2 Calling wordexp | How to call wordexp .
| |
10.4.3 Flags for Word Expansion | Options you can enable in wordexp .
| |
10.4.4 wordexp Example | A sample program that does word expansion. | |
10.4.5 Details of Tilde Expansion | Details of how tilde expansion works. | |
10.4.6 Details of Variable Substitution | Different types of variable substitution. | |
I/O Overview | ||
11.1 Input/Output Concepts | Some basic information and terminology. | |
11.2 File Names | How to refer to a file. | |
I/O Concepts | ||
11.1.1 Streams and File Descriptors | The GNU Library provides two ways to access the contents of files. | |
11.1.2 File Position | The number of bytes from the beginning of the file. | |
File Names | ||
11.2.1 Directories | Directories contain entries for files. | |
11.2.2 File Name Resolution | A file name specifies how to look up a file. | |
11.2.3 File Name Errors | Error conditions relating to file names. | |
11.2.4 Portability of File Names | File name portability and syntax issues. | |
I/O on Streams | ||
12.1 Streams | About the data type representing a stream. | |
12.2 Standard Streams | Streams to the standard input and output devices are created for you. | |
12.3 Opening Streams | How to create a stream to talk to a file. | |
12.4 Closing Streams | Close a stream when you are finished with it. | |
12.5 Streams and Threads | Issues with streams in threaded programs. | |
12.6 Streams in Internationalized Applications | Streams in internationalized applications. | |
12.7 Simple Output by Characters or Lines | Unformatted output by characters and lines. | |
12.8 Character Input | Unformatted input by characters and words. | |
12.9 Line-Oriented Input | Reading a line or a record from a stream. | |
12.10 Unreading | Peeking ahead/pushing back input just read. | |
12.11 Block Input/Output | Input and output operations on blocks of data. | |
12.12 Formatted Output | printf and related functions.
| |
12.13 Customizing printf | You can define new conversion specifiers for
printf and friends.
| |
12.14 Formatted Input | scanf and related functions.
| |
12.15 End-Of-File and Errors | How you can tell if an I/O error happens. | |
12.16 Recovering from errors | What you can do about errors. | |
12.17 Text and Binary Streams | Some systems distinguish between text files and binary files. | |
12.18 File Positioning | About random-access streams. | |
12.19 Portable File-Position Functions | Random access on peculiar ISO C systems. | |
12.20 Stream Buffering | How to control buffering of streams. | |
12.21 Other Kinds of Streams | Streams that do not necessarily correspond to an open file. | |
12.22 Formatted Messages | Print strictly formatted messages. | |
Unreading | ||
12.10.1 What Unreading Means | An explanation of unreading with pictures. | |
12.10.2 Using ungetc To Do Unreading | How to call ungetc to do unreading.
| |
Formatted Output | ||
12.12.1 Formatted Output Basics | Some examples to get you started. | |
12.12.2 Output Conversion Syntax | General syntax of conversion specifications. | |
12.12.3 Table of Output Conversions | Summary of output conversions and what they do. | |
12.12.4 Integer Conversions | Details about formatting of integers. | |
12.12.5 Floating-Point Conversions | Details about formatting of floating-point numbers. | |
12.12.6 Other Output Conversions | Details about formatting of strings, characters, pointers, and the like. | |
12.12.7 Formatted Output Functions | Descriptions of the actual functions. | |
12.12.8 Dynamically Allocating Formatted Output | Functions that allocate memory for the output. | |
12.12.9 Variable Arguments Output Functions | vprintf and friends.
| |
12.12.10 Parsing a Template String | What kinds of args does a given template call for? | |
12.12.11 Example of Parsing a Template String | Sample program using parse_printf_format .
| |
Customizing Printf | ||
12.13.1 Registering New Conversions | Using register_printf_function
to register a new output conversion.
| |
12.13.2 Conversion Specifier Options | The handler must be able to get the options specified in the template when it is called. | |
12.13.3 Defining the Output Handler | Defining the handler and arginfo
functions that are passed as arguments
to register_printf_function .
| |
12.13.4 printf Extension Example | How to define a printf
handler function.
| |
12.13.5 Predefined printf Handlers | Predefined printf handlers.
| |
Formatted Input | ||
12.14.1 Formatted Input Basics | Some basics to get you started. | |
12.14.2 Input Conversion Syntax | Syntax of conversion specifications. | |
12.14.3 Table of Input Conversions | Summary of input conversions and what they do. | |
12.14.4 Numeric Input Conversions | Details of conversions for reading numbers. | |
12.14.5 String Input Conversions | Details of conversions for reading strings. | |
12.14.6 Dynamically Allocating String Conversions | String conversions that malloc the buffer.
| |
12.14.7 Other Input Conversions | Details of miscellaneous other conversions. | |
12.14.8 Formatted Input Functions | Descriptions of the actual functions. | |
12.14.9 Variable Arguments Input Functions | vscanf and friends.
| |
Stream Buffering | ||
12.20.1 Buffering Concepts | Terminology is defined here. | |
12.20.2 Flushing Buffers | How to ensure that output buffers are flushed. | |
12.20.3 Controlling Which Kind of Buffering | How to specify what kind of buffering to use. | |
Other Kinds of Streams | ||
12.21.1 String Streams | Streams that get data from or put data in a string or memory buffer. | |
12.21.2 Obstack Streams | Streams that store data in an obstack. | |
12.21.3 Programming Your Own Custom Streams | Defining your own streams with an arbitrary input data source and/or output data sink. | |
Custom Streams | ||
12.21.3.1 Custom Streams and Cookies | The cookie records where to fetch or store data that is read or written. | |
12.21.3.2 Custom Stream Hook Functions | How you should define the four hook functions that a custom stream needs. | |
Formatted Messages | ||
12.22.1 Printing Formatted Messages | The fmtmsg function.
| |
12.22.2 Adding Severity Classes | Add more severity classes. | |
12.22.3 How to use fmtmsg and addseverity | ||
Low-Level I/O | ||
13.1 Opening and Closing Files | How to open and close file descriptors. | |
13.2 Input and Output Primitives | Reading and writing data. | |
13.3 Setting the File Position of a Descriptor | Setting a descriptor's file position. | |
13.4 Descriptors and Streams | Converting descriptor to stream or vice-versa. | |
13.5 Dangers of Mixing Streams and Descriptors | Precautions needed if you use both descriptors and streams. | |
13.6 Fast Scatter-Gather I/O | Fast I/O to discontinuous buffers. | |
13.7 Memory-mapped I/O | Using files like memory. | |
13.8 Waiting for Input or Output | How to check for input or output on multiple file descriptors. | |
13.9 Synchronizing I/O operations | Making sure all I/O actions completed. | |
13.10 Perform I/O Operations in Parallel | Perform I/O in parallel. | |
13.11 Control Operations on Files | Various other operations on file descriptors. | |
13.12 Duplicating Descriptors | Fcntl commands for duplicating file descriptors. | |
13.13 File Descriptor Flags | Fcntl commands for manipulating flags associated with file descriptors. | |
13.14 File Status Flags | Fcntl commands for manipulating flags associated with open files. | |
13.15 File Locks | Fcntl commands for implementing file locking. | |
13.16 Interrupt-Driven Input | Getting an asynchronous signal when input arrives. | |
13.17 Generic I/O Control operations | ||
Stream/Descriptor Precautions | ||
13.5.1 Linked Channels | Dealing with channels sharing a file position. | |
13.5.2 Independent Channels | Dealing with separately opened, unlinked channels. | |
13.5.3 Cleaning Streams | Cleaning a stream makes it safe to use another channel. | |
Asynchronous I/O | ||
13.10.1 Asynchronous Read and Write Operations | ||
13.10.2 Getting the Status of AIO Operations | ||
13.10.3 Getting into a Consistent State | Getting into a consistent state. | |
13.10.4 Cancellation of AIO Operations | ||
13.10.5 How to optimize the AIO implementation | ||
File Status Flags | ||
13.14.1 File Access Modes | Whether the descriptor can read or write. | |
13.14.2 Open-time Flags | Details of open .
| |
13.14.3 I/O Operating Modes | Special modes to control I/O operations. | |
13.14.4 Getting and Setting File Status Flags | Fetching and changing these flags. | |
File System Interface | ||
14.1 Working Directory | This is used to resolve relative file names. | |
14.2 Accessing Directories | Finding out what files a directory contains. | |
14.3 Working with Directory Trees | Apply actions to all files or a selectable subset of a directory hierarchy. | |
14.4 Hard Links | Adding alternate names to a file. | |
14.5 Symbolic Links | A file that "points to" a file name. | |
14.6 Deleting Files | How to delete a file, and what that means. | |
14.7 Renaming Files | Changing a file's name. | |
14.8 Creating Directories | A system call just for creating a directory. | |
14.9 File Attributes | Attributes of individual files. | |
14.10 Making Special Files | How to create special files. | |
14.11 Temporary Files | Naming and creating temporary files. | |
Accessing Directories | ||
14.2.1 Format of a Directory Entry | Format of one directory entry. | |
14.2.2 Opening a Directory Stream | How to open a directory stream. | |
14.2.3 Reading and Closing a Directory Stream | How to read directory entries from the stream. | |
14.2.4 Simple Program to List a Directory | A very simple directory listing program. | |
14.2.5 Random Access in a Directory Stream | Rereading part of the directory already read with the same stream. | |
14.2.6 Scanning the Content of a Directory | Get entries for user selected subset of contents in given directory. | |
14.2.7 Simple Program to List a Directory, Mark II | Revised version of the program. | |
File Attributes | ||
14.9.1 The meaning of the File Attributes | The names of the file attributes, and what their values mean. | |
14.9.2 Reading the Attributes of a File | How to read the attributes of a file. | |
14.9.3 Testing the Type of a File | Distinguishing ordinary files, directories, links… | |
14.9.4 File Owner | How ownership for new files is determined, and how to change it. | |
14.9.5 The Mode Bits for Access Permission | How information about a file's access mode is stored. | |
14.9.6 How Your Access to a File is Decided | How the system decides who can access a file. | |
14.9.7 Assigning File Permissions | How permissions for new files are assigned, and how to change them. | |
14.9.8 Testing Permission to Access a File | How to find out if your process can access a file. | |
14.9.9 File Times | About the time attributes of a file. | |
14.9.10 File Size | Manually changing the size of a file. | |
Pipes and FIFOs | ||
15.1 Creating a Pipe | Making a pipe with the pipe function.
| |
15.2 Pipe to a Subprocess | Using a pipe to communicate with a child process. | |
15.3 FIFO Special Files | Making a FIFO special file. | |
15.4 Atomicity of Pipe I/O | When pipe (or FIFO) I/O is atomic. | |
Sockets | ||
16.1 Socket Concepts | Basic concepts you need to know about. | |
16.2 Communication Styles | Stream communication, datagrams and other styles. | |
16.3 Socket Addresses | How socket names ("addresses") work. | |
16.4 Interface Naming | Identifying specific network interfaces. | |
16.5 The Local Namespace | Details about the local namespace. | |
16.6 The Internet Namespace | Details about the Internet namespace. | |
16.7 Other Namespaces | Other namespaces not documented fully here. | |
16.8 Opening and Closing Sockets | Creating sockets and destroying them. | |
16.9 Using Sockets with Connections | Operations on sockets with connection state. | |
16.10 Datagram Socket Operations | Operations on datagram sockets. | |
16.11 The inetd Daemon | Inetd is a daemon that starts servers on request. The most convenient way to write a server is to make it work with Inetd. | |
16.12 Socket Options | Miscellaneous low-level socket options. | |
16.13 Networks Database | Accessing the database of network names. | |
Socket Addresses | ||
16.3.1 Address Formats | About struct sockaddr .
| |
16.3.2 Setting the Address of a Socket | Binding an address to a socket. | |
16.3.3 Reading the Address of a Socket | Reading the address of a socket. | |
Local Namespace | ||
16.5.1 Local Namespace Concepts | What you need to understand. | |
16.5.2 Details of Local Namespace | Address format, symbolic names, etc. | |
16.5.3 Example of Local-Namespace Sockets | Example of creating a socket. | |
Internet Namespace | ||
16.6.1 Internet Socket Address Formats | How socket addresses are specified in the Internet namespace. | |
16.6.2 Host Addresses | All about host addresses of Internet host. | |
16.6.6 Protocols Database | Referring to protocols by name. | |
16.6.3 Internet Ports | Internet port numbers. | |
16.6.4 The Services Database | Ports may have symbolic names. | |
16.6.5 Byte Order Conversion | Different hosts may use different byte ordering conventions; you need to canonicalize host address and port number. | |
16.6.7 Internet Socket Example | Putting it all together. | |
Host Addresses | ||
16.6.2.1 Internet Host Addresses | What a host number consists of. | |
16.6.2.2 Host Address Data Type | Data type for a host number. | |
16.6.2.3 Host Address Functions | Functions to operate on them. | |
16.6.2.4 Host Names | Translating host names to host numbers. | |
Open/Close Sockets | ||
16.8.1 Creating a Socket | How to open a socket. | |
16.8.2 Closing a Socket | How to close a socket. | |
16.8.3 Socket Pairs | These are created like pipes. | |
Connections | ||
16.9.1 Making a Connection | What the client program must do. | |
16.9.2 Listening for Connections | How a server program waits for requests. | |
16.9.3 Accepting Connections | What the server does when it gets a request. | |
16.9.4 Who is Connected to Me? | Getting the address of the other side of a connection. | |
16.9.5 Transferring Data | How to send and receive data. | |
16.9.6 Byte Stream Socket Example | An example program: a client for communicating over a byte stream socket in the Internet namespace. | |
16.9.7 Byte Stream Connection Server Example | A corresponding server program. | |
16.9.8 Out-of-Band Data | This is an advanced feature. | |
Transferring Data | ||
16.9.5.1 Sending Data | Sending data with send .
| |
16.9.5.2 Receiving Data | Reading data with recv .
| |
16.9.5.3 Socket Data Options | Using send and recv .
| |
Datagrams | ||
16.10.1 Sending Datagrams | Sending packets on a datagram socket. | |
16.10.2 Receiving Datagrams | Receiving packets on a datagram socket. | |
16.10.3 Datagram Socket Example | An example program: packets sent over a datagram socket in the local namespace. | |
16.10.4 Example of Reading Datagrams | Another program, that receives those packets. | |
Inetd | ||
16.11.1 inetd Servers | ||
16.11.2 Configuring inetd | ||
Socket Options | ||
16.12.1 Socket Option Functions | The basic functions for setting and getting socket options. | |
16.12.2 Socket-Level Options | Details of the options at the socket level. | |
Low-Level Terminal Interface | ||
17.1 Identifying Terminals | How to determine if a file is a terminal device, and what its name is. | |
17.2 I/O Queues | About flow control and typeahead. | |
17.3 Two Styles of Input: Canonical or Not | Two basic styles of input processing. | |
17.4 Terminal Modes | How to examine and modify flags controlling details of terminal I/O: echoing, signals, editing. Posix. | |
17.5 BSD Terminal Modes | BSD compatible terminal mode setting | |
17.6 Line Control Functions | Sending break sequences, clearing terminal buffers … | |
17.7 Noncanonical Mode Example | How to read single characters without echo. | |
17.8 Pseudo-Terminals | How to open a pseudo-terminal. | |
Terminal Modes | ||
17.4.1 Terminal Mode Data Types | The data type struct termios and
related types.
| |
17.4.2 Terminal Mode Functions | Functions to read and set the terminal attributes. | |
17.4.3 Setting Terminal Modes Properly | The right way to set terminal attributes reliably. | |
17.4.4 Input Modes | Flags controlling low-level input handling. | |
17.4.5 Output Modes | Flags controlling low-level output handling. | |
17.4.6 Control Modes | Flags controlling serial port behavior. | |
17.4.7 Local Modes | Flags controlling high-level input handling. | |
17.4.8 Line Speed | How to read and set the terminal line speed. | |
17.4.9 Special Characters | Characters that have special effects, and how to change them. | |
17.4.10 Noncanonical Input | Controlling how long to wait for input. | |
Special Characters | ||
17.4.9.1 Characters for Input Editing | Special characters that terminate lines and delete text, and other editing functions. | |
17.4.9.2 Characters that Cause Signals | Special characters that send or raise signals to or for certain classes of processes. | |
17.4.9.3 Special Characters for Flow Control | Special characters that suspend or resume suspended output. | |
17.4.9.4 Other Special Characters | Other special characters for BSD systems: they can discard output, and print status. | |
Pseudo-Terminals | ||
17.8.1 Allocating Pseudo-Terminals | Allocating a pseudo terminal. | |
17.8.2 Opening a Pseudo-Terminal Pair | How to open both sides of a pseudo-terminal in a single operation. | |
Syslog | ||
18.1 Overview of Syslog | Overview of a system's Syslog facility | |
18.2 Submitting Syslog Messages | Functions to submit messages to Syslog | |
Submitting Syslog Messages | ||
18.2.1 openlog | Open connection to Syslog | |
18.2.2 syslog, vsyslog | Submit message to Syslog | |
18.2.3 closelog | Close connection to Syslog | |
18.2.4 setlogmask | Cause certain messages to be ignored | |
18.2.5 Syslog Example | Example of all of the above | |
Mathematics | ||
19.1 Predefined Mathematical Constants | Precise numeric values for often-used constants. | |
19.2 Trigonometric Functions | Sine, cosine, tangent, and friends. | |
19.3 Inverse Trigonometric Functions | Arcsine, arccosine, etc. | |
19.4 Exponentiation and Logarithms | Also pow and sqrt. | |
19.5 Hyperbolic Functions | sinh, cosh, tanh, etc. | |
19.6 Special Functions | Bessel, gamma, erf. | |
19.7 Known Maximum Errors in Math Functions | ||
19.8 Pseudo-Random Numbers | Functions for generating pseudo-random numbers. | |
19.9 Is Fast Code or Small Code preferred? | Fast code or small code. | |
Pseudo-Random Numbers | ||
19.8.1 ISO C Random Number Functions | rand and friends.
| |
19.8.2 BSD Random Number Functions | random and friends.
| |
19.8.3 SVID Random Number Function | drand48 and friends.
| |
Arithmetic | ||
20.1 Integers | Basic integer types and concepts | |
20.2 Integer Division | Integer division with guaranteed rounding. | |
20.3 Floating Point Numbers | Basic concepts. IEEE 754. | |
20.4 Floating-Point Number Classification Functions | The five kinds of floating-point number. | |
20.5 Errors in Floating-Point Calculations | When something goes wrong in a calculation. | |
20.6 Rounding Modes | Controlling how results are rounded. | |
20.7 Floating-Point Control Functions | Saving and restoring the FPU's state. | |
20.8 Arithmetic Functions | Fundamental operations provided by the library. | |
20.9 Complex Numbers | The types. Writing complex constants. | |
20.10 Projections, Conjugates, and Decomposing of Complex Numbers | Projection, conjugation, decomposition. | |
20.11 Parsing of Numbers | Converting strings to numbers. | |
20.12 Old-fashioned System V number-to-string functions | An archaic way to convert numbers to strings. | |
Floating Point Errors | ||
20.5.1 FP Exceptions | IEEE 754 math exceptions and how to detect them. | |
20.5.2 Infinity and NaN | Special values returned by calculations. | |
20.5.3 Examining the FPU status word | Checking for exceptions after the fact. | |
20.5.4 Error Reporting by Mathematical Functions | How the math functions report errors. | |
Arithmetic Functions | ||
20.8.1 Absolute Value | Absolute values of integers and floats. | |
20.8.2 Normalization Functions | Extracting exponents and putting them back. | |
20.8.3 Rounding Functions | Rounding floats to integers. | |
20.8.4 Remainder Functions | Remainders on division, precisely defined. | |
20.8.5 Setting and modifying single bits of FP values | Sign bit adjustment. Adding epsilon. | |
20.8.6 Floating-Point Comparison Functions | Comparisons without risk of exceptions. | |
20.8.7 Miscellaneous FP arithmetic functions | Max, min, positive difference, multiply-add. | |
Parsing of Numbers | ||
20.11.1 Parsing of Integers | Functions for conversion of integer values. | |
20.11.2 Parsing of Floats | Functions for conversion of floating-point values. | |
Date and Time | ||
21.1 Time Basics | Concepts and definitions. | |
21.2 Elapsed Time | Data types to represent elapsed times | |
21.3 Processor And CPU Time | Time a program has spent executing. | |
21.4 Calendar Time | Manipulation of "real" dates and times. | |
21.5 Setting an Alarm | Sending a signal after a specified time. | |
21.6 Sleeping | Waiting for a period of time. | |
Processor And CPU Time | ||
21.3.1 CPU Time Inquiry | The clock function.
| |
21.3.2 Processor Time Inquiry | The times function.
| |
Calendar Time | ||
21.4.1 Simple Calendar Time | Facilities for manipulating calendar time. | |
21.4.2 High-Resolution Calendar | A time representation with greater precision. | |
21.4.3 Broken-down Time | Facilities for manipulating local time. | |
21.4.4 High Accuracy Clock | Maintaining a high accuracy system clock. | |
21.4.5 Formatting Calendar Time | Converting times to strings. | |
21.4.6 Convert textual time and date information back | Convert textual time and date information back into broken-down time values. | |
21.4.7 Specifying the Time Zone with TZ | How users specify the time zone. | |
21.4.8 Functions and Variables for Time Zones | Functions to examine or specify the time zone. | |
21.4.9 Time Functions Example | An example program showing use of some of the time functions. | |
Parsing Date and Time | ||
21.4.6.1 Interpret string according to given format | ||
21.4.6.2 A More User-friendly Way to Parse Times and Dates | User-friendly function to parse data and time strings. | |
Resource Usage And Limitation | ||
22.1 Resource Usage | Measuring various resources used. | |
22.2 Limiting Resource Usage | Specifying limits on resource usage. | |
22.3 Process CPU Priority And Scheduling | Reading or setting process run priority. | |
22.4 Querying memory available resources | ||
22.5 Learn about the processors available | ||
Priority | ||
22.3.1 Absolute Priority | The first tier of priority. Posix | |
22.3.2 Realtime Scheduling | Scheduling among the process nobility | |
22.3.3 Basic Scheduling Functions | Get/set scheduling policy, priority | |
22.3.4 Traditional Scheduling | Scheduling among the vulgar masses | |
22.3.5 Limiting execution to certain CPUs | ||
Traditional Scheduling | ||
22.3.4.1 Introduction To Traditional Scheduling | ||
22.3.4.2 Functions For Traditional Scheduling | ||
Memory Resources | ||
22.4.1 Overview about traditional Unix memory handling | ||
22.4.2 How to get information about the memory subsystem? | ||
Non-Local Exits | ||
23.1 Introduction to Non-Local Exits | When and how to use these facilities. | |
23.2 Details of Non-Local Exits | Functions for non-local exits. | |
23.3 Non-Local Exits and Signals | Portability issues. | |
23.4 Complete Context Control | Complete context control a la System V. | |
Signal Handling | ||
24.1 Basic Concepts of Signals | Introduction to the signal facilities. | |
24.2 Standard Signals | Particular kinds of signals with standard names and meanings. | |
24.3 Specifying Signal Actions | Specifying what happens when a particular signal is delivered. | |
24.4 Defining Signal Handlers | How to write a signal handler function. | |
24.5 Primitives Interrupted by Signals | Signal handlers affect use of open ,
read , write and other functions.
| |
24.6 Generating Signals | How to send a signal to a process. | |
24.7 Blocking Signals | Making the system hold signals temporarily. | |
24.8 Waiting for a Signal | Suspending your program until a signal arrives. | |
24.9 Using a Separate Signal Stack | ||
24.10 BSD Signal Handling | Additional functions for backward compatibility with BSD. | |
Concepts of Signals | ||
24.1.1 Some Kinds of Signals | Some examples of what can cause a signal. | |
24.1.2 Concepts of Signal Generation | Concepts of why and how signals occur. | |
24.1.3 How Signals Are Delivered | Concepts of what a signal does to the process. | |
Standard Signals | ||
24.2.1 Program Error Signals | Used to report serious program errors. | |
24.2.2 Termination Signals | Used to interrupt and/or terminate the program. | |
24.2.3 Alarm Signals | Used to indicate expiration of timers. | |
24.2.4 Asynchronous I/O Signals | Used to indicate input is available. | |
24.2.5 Job Control Signals | Signals used to support job control. | |
24.2.6 Operation Error Signals | Used to report operational system errors. | |
24.2.7 Miscellaneous Signals | ||
24.2.8 Signal Messages | Printing a message describing a signal. | |
Signal Actions | ||
24.3.1 Basic Signal Handling | The simple signal function.
| |
24.3.2 Advanced Signal Handling | The more powerful sigaction function.
| |
24.3.3 Interaction of signal and sigaction | How those two functions interact. | |
24.3.4 sigaction Function Example | An example of using the sigaction function. | |
24.3.5 Flags for sigaction | Specifying options for signal handling. | |
24.3.6 Initial Signal Actions | How programs inherit signal actions. | |
Defining Handlers | ||
24.4.1 Signal Handlers that Return | Handlers that return normally, and what this means. | |
24.4.2 Handlers That Terminate the Process | How handler functions terminate a program. | |
24.4.3 Nonlocal Control Transfer in Handlers | Nonlocal transfer of control out of a signal handler. | |
24.4.4 Signals Arriving While a Handler Runs | What happens when signals arrive while the handler is already occupied. | |
24.4.5 Signals Close Together Merge into One | When a second signal arrives before the first is handled. | |
24.4.6 Signal Handling and Nonreentrant Functions | Do not call any functions unless you know they are reentrant with respect to signals. | |
24.4.7 Atomic Data Access and Signal Handling | A single handler can run in the middle of reading or writing a single object. | |
Atomic Data Access | ||
24.4.7.1 Problems with Non-Atomic Access | A program illustrating interrupted access. | |
24.4.7.2 Atomic Types | Data types that guarantee no interruption. | |
24.4.7.3 Atomic Usage Patterns | Proving that interruption is harmless. | |
Generating Signals | ||
24.6.1 Signaling Yourself | A process can send a signal to itself. | |
24.6.2 Signaling Another Process | Send a signal to another process. | |
24.6.3 Permission for using kill | ||
24.6.4 Using kill for Communication | ||
Blocking Signals | ||
24.7.1 Why Blocking Signals is Useful | The purpose of blocking signals. | |
24.7.2 Signal Sets | How to specify which signals to block. | |
24.7.3 Process Signal Mask | Blocking delivery of signals to your process during normal execution. | |
24.7.4 Blocking to Test for Delivery of a Signal | ||
24.7.5 Blocking Signals for a Handler | Blocking additional signals while a handler is being run. | |
24.7.6 Checking for Pending Signals | ||
24.7.7 Remembering a Signal to Act On Later | 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 | ||
24.8.1 Using pause | The simple way, using pause .
| |
24.8.2 Problems with pause | Why the simple way is often not very good. | |
24.8.3 Using sigsuspend | Reliably waiting for a specific signal. | |
BSD Signal Handling | ||
24.10.1 BSD Function to Establish a Handler | ||
24.10.2 BSD Functions for Blocking Signals | ||
Program Basics | ||
25.1 Program Arguments | Parsing your program's command-line arguments. | |
25.4 Environment Variables | Less direct parameters affecting your program | |
25.5 System Calls | Requesting service from the system | |
25.6 Program Termination | Telling the system you're done; return status | |
Program Arguments | ||
25.1.1 Program Argument Syntax Conventions | By convention, options start with a hyphen. | |
25.1.2 Parsing Program Arguments | Ways to parse program options and arguments. | |
Parsing Program Arguments | ||
25.2 Parsing program options using getopt | ||
25.3 Parsing Program Options with Argp | Parsing program options using argp_parse .
| |
25.3.12.1 Parsing of Suboptions | Some programs need more detailed options. | |
25.3.13 Parsing of Suboptions Example | This shows how it could be done for mount .
| |
Environment Variables | ||
25.4.1 Environment Access | How to get and set the values of environment variables. | |
25.4.2 Standard Environment Variables | These environment variables have standard interpretations. | |
Program Termination | ||
25.6.1 Normal Termination | If a program calls exit , a
process terminates normally.
| |
25.6.2 Exit Status | The exit status provides information
about why the process terminated.
| |
25.6.3 Cleanups on Exit | A process can run its own cleanup functions upon normal termination. | |
25.6.4 Aborting a Program | The abort function causes
abnormal program termination.
| |
25.6.5 Termination Internals | What happens when a process terminates. | |
Processes | ||
26.1 Running a Command | The easy way to run another program. | |
26.2 Process Creation Concepts | An overview of the hard way to do it. | |
26.3 Process Identification | How to get the process ID of a process. | |
26.4 Creating a Process | How to fork a child process. | |
26.5 Executing a File | How to make a process execute another program. | |
26.6 Process Completion | How to tell when a child process has completed. | |
26.7 Process Completion Status | How to interpret the status value returned from a child process. | |
26.8 BSD Process Wait Functions | More functions, for backward compatibility. | |
26.9 Process Creation Example | A complete example program. | |
Job Control | ||
27.1 Concepts of Job Control | Jobs can be controlled by a shell. | |
27.2 Job Control is Optional | Not all POSIX systems support job control. | |
27.3 Controlling Terminal of a Process | How a process gets its controlling terminal. | |
27.4 Access to the Controlling Terminal | How processes share the controlling terminal. | |
27.5 Orphaned Process Groups | Jobs left after the user logs out. | |
27.6 Implementing a Job Control Shell | What a shell must do to implement job control. | |
27.7 Functions for Job Control | Functions to control process groups. | |
Implementing a Shell | ||
27.6.1 Data Structures for the Shell | Introduction to the sample shell. | |
27.6.2 Initializing the Shell | What the shell must do to take responsibility for job control. | |
27.6.3 Launching Jobs | Creating jobs to execute commands. | |
27.6.4 Foreground and Background | Putting a job in foreground of background. | |
27.6.5 Stopped and Terminated Jobs | Reporting job status. | |
27.6.6 Continuing Stopped Jobs | How to continue a stopped job in the foreground or background. | |
27.6.7 The Missing Pieces | Other parts of the shell. | |
Functions for Job Control | ||
27.7.1 Identifying the Controlling Terminal | Determining the controlling terminal's name. | |
27.7.2 Process Group Functions | Functions for manipulating process groups. | |
27.7.3 Functions for Controlling Terminal Access | Functions for controlling terminal access. | |
Name Service Switch | ||
28.1 NSS Basics | What is this NSS good for. | |
28.2 The NSS Configuration File | Configuring NSS. | |
28.3 NSS Module Internals | How does it work internally. | |
28.4 Extending NSS | What to do to add services or databases. | |
NSS Configuration File | ||
28.2.1 Services in the NSS configuration File | Service names in the NSS configuration. | |
28.2.2 Actions in the NSS configuration | React appropriately to the lookup result. | |
28.2.3 Notes on the NSS Configuration File | Things to take care about while configuring NSS. | |
NSS Module Internals | ||
28.3.1 The Naming Scheme of the NSS Modules | Construction of the interface function of the NSS modules. | |
28.3.2 The Interface of the Function in NSS Modules | Programming interface in the NSS module functions. | |
Extending NSS | ||
28.4.1 Adding another Service to NSS | What is to do to add a new service. | |
28.4.2 Internals of the NSS Module Functions | Guidelines for writing new NSS service functions. | |
Users and Groups | ||
29.1 User and Group IDs | Each user has a unique numeric ID; likewise for groups. | |
29.2 The Persona of a Process | The user IDs and group IDs of a process. | |
29.3 Why Change the Persona of a Process? | Why a program might need to change its user and/or group IDs. | |
29.4 How an Application Can Change Persona | Changing the user and group IDs. | |
29.5 Reading the Persona of a Process | How to examine the user and group IDs. | |
29.6 Setting the User ID | Functions for setting the user ID. | |
29.7 Setting the Group IDs | Functions for setting the group IDs. | |
29.8 Enabling and Disabling Setuid Access | Turning setuid access on and off. | |
29.9 Setuid Program Example | The pertinent parts of one sample program. | |
29.10 Tips for Writing Setuid Programs | How to avoid granting unlimited access. | |
29.11 Identifying Who Logged In | Getting the name of the user who logged in, or of the real user ID of the current process. | |
29.12 The User Accounting Database | Keeping information about users and various actions in databases. | |
29.13 User Database | Functions and data structures for accessing the user database. | |
29.14 Group Database | Functions and data structures for accessing the group database. | |
29.15 User and Group Database Example | Example program showing the use of database inquiry functions. | |
29.16 Netgroup Database | Functions for accessing the netgroup database. | |
User Accounting Database | ||
29.12.1 Manipulating the User Accounting Database | Scanning and modifying the user accounting database. | |
29.12.2 XPG User Accounting Database Functions | A standardized way for doing the same thing. | |
29.12.3 Logging In and Out | Functions from BSD that modify the user accounting database. | |
User Database | ||
29.13.1 The Data Structure that Describes a User | What each user record contains. | |
29.13.2 Looking Up One User | How to look for a particular user. | |
29.13.3 Scanning the List of All Users | Scanning the list of all users, one by one. | |
29.13.4 Writing a User Entry | How a program can rewrite a user's record. | |
Group Database | ||
29.14.1 The Data Structure for a Group | What each group record contains. | |
29.14.2 Looking Up One Group | How to look for a particular group. | |
29.14.3 Scanning the List of All Groups | Scanning the list of all groups. | |
Netgroup Database | ||
29.16.1 Netgroup Data | Data in the Netgroup database and where it comes from. | |
29.16.2 Looking up one Netgroup | How to look for a particular netgroup. | |
29.16.3 Testing for Netgroup Membership | How to test for netgroup membership. | |
System Management | ||
30.1 Host Identification | Determining the name of the machine. | |
30.2 Platform Type Identification | Determining operating system and basic machine type | |
30.3 Controlling and Querying Mounts | Controlling/querying mounts | |
30.4 System Parameters | Getting and setting various system parameters | |
Filesystem Handling | ||
30.3.1 Mount Information | What is or could be mounted? | |
30.3.2 Mount, Unmount, Remount | Controlling what is mounted and how | |
Mount Information | ||
30.3.1.1 The `fstab' file | ||
30.3.1.2 The `mtab' file | ||
30.3.1.3 Other (Non-libc) Sources of Mount Information | Other (non-libc) sources of mount information | |
System Configuration | ||
31.1 General Capacity Limits | Constants and functions that describe various process-related limits that have one uniform value for any given machine. | |
31.2 Overall System Options | Optional POSIX features. | |
31.3 Which Version of POSIX is Supported | Version numbers of POSIX.1 and POSIX.2. | |
31.4 Using sysconf | Getting specific configuration values of general limits and system options. | |
31.5 Minimum Values for General Capacity Limits | Minimum values for general limits. | |
31.6 Limits on File System Capacity | Size limitations that pertain to individual files. These can vary between file systems or even from file to file. | |
31.7 Optional Features in File Support | Optional features that some files may support. | |
31.8 Minimum Values for File System Limits | Minimum values for file limits. | |
31.9 Using pathconf | Getting the limit values for a particular file. | |
31.10 Utility Program Capacity Limits | Capacity limits of some POSIX.2 utility programs. | |
31.11 Minimum Values for Utility Limits | Minimum allowable values of those limits. | |
31.12 String-Valued Parameters | Getting the default search path. | |
Sysconf | ||
31.4.1 Definition of sysconf | Detailed specifications of sysconf .
| |
31.4.2 Constants for sysconf Parameters | The list of parameters sysconf can read.
| |
31.4.3 Examples of sysconf | How to use sysconf and the parameter
macros properly together.
| |
Cryptographic Functions | ||
32.1 Legal Problems | This software can get you locked up, or worse. | |
32.2 Reading Passwords | Prompting the user for a password. | |
32.3 Encrypting Passwords | A one-way function for passwords. | |
32.4 DES Encryption | Routines for DES encryption. | |
Debugging Support | ||
33.1 Backtraces | Obtaining and printing a back trace of the current stack. | |
POSIX Threads | ||
34.1 Basic Thread Operations | Creating, terminating, and waiting for threads. | |
34.2 Thread Attributes | Tuning thread scheduling. | |
34.3 Cancellation | Stopping a thread before it's done. | |
34.4 Cleanup Handlers | Deallocating resources when a thread is canceled. | |
34.5 Mutexes | One way to synchronize threads. | |
34.6 Condition Variables | Another way. | |
34.7 POSIX Semaphores | And a third way. | |
34.8 Thread-Specific Data | Variables with different values in different threads. | |
34.9 Threads and Signal Handling | Why you should avoid mixing the two, and how to do it if you must. | |
34.10 Threads and Fork | Interactions between threads and the
fork function.
| |
34.11 Streams and Fork | Interactions between stdio streams and
fork .
| |
34.12 Miscellaneous Thread Functions | A grab bag of utility routines. | |
Language Features | ||
A.1 Explicitly Checking Internal Consistency | Using assert to abort if
something "impossible" happens.
| |
A.2 Variadic Functions | Defining functions with varying numbers of args. | |
A.3 Null Pointer Constant | The macro NULL .
| |
A.4 Important Data Types | Data types for object sizes. | |
A.5 Data Type Measurements | Parameters of data type representations. | |
Variadic Functions | ||
A.2.1 Why Variadic Functions are Used | Reasons for making functions take variable arguments. | |
A.2.2 How Variadic Functions are Defined and Used | How to define and call variadic functions. | |
A.2.3 Example of a Variadic Function | A complete example. | |
How Variadic | ||
A.2.2.1 Syntax for Variable Arguments | How to make a prototype for a function with variable arguments. | |
A.2.2.2 Receiving the Argument Values | Steps you must follow to access the optional argument values. | |
A.2.2.3 How Many Arguments Were Supplied | How to decide whether there are more arguments. | |
A.2.2.4 Calling Variadic Functions | Things you need to know about calling variable arguments functions. | |
A.2.2.5 Argument Access Macros | Detailed specification of the macros for accessing variable arguments. | |
A.2.3.1 Old-Style Variadic Functions | The pre-ISO way of defining variadic functions. | |
Data Type Measurements | ||
A.5.1 Computing the Width of an Integer Data Type | How many bits does an integer type hold? | |
A.5.2 Range of an Integer Type | What are the largest and smallest values that an integer type can hold? | |
A.5.3 Floating Type Macros | Parameters that measure the floating point types. | |
A.5.4 Structure Field Offset Measurement | Getting measurements on structure types. | |
Floating Type Macros | ||
A.5.3.1 Floating Point Representation Concepts | Definitions of terminology. | |
A.5.3.2 Floating Point Parameters | Details of specific macros. | |
A.5.3.3 IEEE Floating Point | The measurements for one common representation. | |
Installation | ||
C.1 Configuring and compiling GNU Libc | How to compile and test GNU libc. | |
C.2 Installing the C Library | How to install it once you've got it compiled. | |
C.3 Recommended Tools for Compilation | You'll need these first. | |
C.4 Supported Configurations | What it runs on, what it doesn't. | |
C.5 Specific advice for GNU/Linux systems | ||
C.6 Reporting Bugs | So they'll get fixed. | |
Maintenance | ||
D.1 Adding New Functions | How to add new functions or header files to the GNU C library. | |
D.2 Porting the GNU C Library | How to port the GNU C library to a new machine or operating system. | |
Porting | ||
D.2.1 Layout of the `sysdeps' Directory Hierarchy | The layout of the `sysdeps' hierarchy. | |
D.2.2 Porting the GNU C Library to Unix Systems | Porting the library to an average Unix-like system. |
[Top] | [Contents] | [Index] | [ ? ] |
This document was generated by root on May, 21 2010 using texi2html 1.76.