@(#)Clib.ms 8.1 (Berkeley) 06/08/93
.so /k3/unx/MACROS/cmac1 .CH 3 "C LIBRARIES" .H 1 "C LIBRARIES" .H 2 "GENERAL"
This chapter and Chapter 4 describe the libraries that are supported on the UNIX operating system. A library is a collection of related functions and/or declarations that simplify programming effort by linking only what is needed, allowing use of locally produced functions, etc. All of the functions described are also described in Part 3 of the "UNIX System Programmer Reference Manual" . Most of the declarations described are in Part 5 of the "UNIX System Programmer Reference Manual" . The three main libraries on the UNIX system are: .tr ~ .VL 20 .LI ~C~library This is the basic library for C language programs. The C library is composed of functions and declarations used for file access, string testing and manipulation, character testing and manipulation, memory allocation, and other functions. This library is described later in this chapter. .tr ~ .LE .VL 20 .LI ~Object~file This library provides functions for the access and manipulation of object files. This library is described in Chapter 4. .tr ~ .LE .VL 20 .LI ~Math~library This library provides exponential, bessel functions, logarithmic, hyperbolic, and trigonometric functions. This library is described in Chapter 4. .LE
Some libraries consist of two portions - functions and declarations. In some cases, the user must request that the functions (and/or declarations) of a specific library be included in a program being compiled. In other cases, the functions (and/or declarations) are included automatically. .H 3 "Including Functions"
When a program is being compiled, the compiler will automatically search the C language library to locate and include functions that are used in the program. This is the case only for the C library and no other library. In order for the compiler to locate and include functions from other libraries, the user must specify these libraries on the command line for the compiler. For example, when using functions of the math library, the user must request that the math library be searched by including the argument -lm on the command line, such as: I cc file.c -lm The argument -lm must come after all files that reference functions in the math library in order for the link editor to know which functions to include in the a.out file.
0 This method should be used for all functions that are not part of the C language library. .H 3 "Including Declarations"
Some functions require a set of declarations in order to operate properly. A set of declarations is stored in a file under the /usr/include directory. These files are referred to as header files. In order to include a certain header file, the user must specify this request within the C language program. The request is in the form: I #include <file.h>
0 where file.h is the name of the file. Since the header files define the type of the functions and various preprocessor constants, they must be included before invoking the functions they declare.
The remainder of this chapter describes the functions and header files of the C Library. The description of the library begins with the actions required by the user to include the functions and/or header files in a program being compiled (if any). Following the description of the actions required is information in three-column format of the form: L function\^ reference\^(N) Brief description.
0 The functions are grouped by type while the reference refers to section `N' in the "UNIX System Programmer Reference Manual" . Following this, are descriptions of the header files associated with these functions (if any). .H 2 "THE C LIBRARY"
The C library consists of several types of functions. All the functions of the C library are loaded automatically by the compiler. Various declarations must sometimes be included by the user as required. The functions of the C library are divided into the following types: L 6 1 .LI Input/output control .LI String manipulation .LI Character manipulation .LI Time functions .LI Miscellaneous functions. .LE .H 3 "Input/Output Control"
These functions of the C library are automatically included as needed during the compiling of a C language program. No command line request is needed.
The header file required by the input/output functions should be included in the program being compiled. This is accomplished by including the line: I #include <stdio.h>
0 near the beginning of each file that references an input or output function.
The input/output functions are grouped into the following categories: L 6 1 .LI File access .LI File status .LI Input .LI Output .LI Miscellaneous. .LE .H 3 "File Access Functions"
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
fclose\^ fclose\^(3S) Close an open stream. |
fdopen\^ fopen\^(3S) Associate stream with |
an open(2) ed file. |
fileno\^ ferror\^(3S) File descriptor associated |
with an open stream. |
fopen\^ fopen\^(3S) Open a file with |
specified permissions. |
Fopen returns a pointer |
to a stream which is |
used in subsequent |
references to the file. |
freopen\^ fopen\^(3S) Substitute named file |
in place of open |
stream. |
fseek\^ fseek\^(3S) Reposition the file |
pointer. |
pclose\^ popen\^(3S) Close a stream opened |
by popen. |
popen\^ popen\^(3S) Create pipe as a stream |
between calling process |
and command. |
rewind\^ fseek\^(3S) Reposition file |
pointer at beginning |
of file. |
setbuf\^ setbuf\^(3S) Assign buffering to |
stream. |
vsetbuf setbuf(3S) Similar to setbuf, but |
allowing finer control. |
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
|
clearerr\^ ferror\^(3S) Reset error condition on |
stream. |
feof ferror(3S) Test for ``end of file'' |
on stream. |
ferror\^ ferror\^(3S) Test for error condition |
on stream. |
.SP |
ftell\^ fseek\^(3S) Return current position |
in the file. |
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
fgetc\^ getc\^(3S) True function for getc\^ |
(3S). |
fgets\^ gets\^(3S) Read string from stream. |
fread\^ fread\^(3S) General buffered read |
from stream. |
fscanf\^ scanf\^(3S) Formatted read from |
stream. |
getc\^ getc\^(3S) Read character from |
stream. |
getchar\^ getc\^(3S) Read character from |
standard input. |
gets\^ gets\^(3S) Read string from standard input. |
getw\^ getc\^(3S) Read word from stream. |
scanf\^ scanf\^(3S) Read using format from |
standard input. |
sscanf\^ scanf\^(3S) Formatted from |
string. |
ungetc\^ ungetc\^(3S) Put back one character on |
stream. |
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
fflush\^ fclose\^(3S) Write all currently buffered |
characters from stream. |
fprintf\^ printf\^(3S) Formatted write to |
stream. |
fputc\^ putc\^(3S) True function for putc\^ |
(3S). |
fputs\^ puts\^(3S) Write string to stream. |
fwrite\^ fread\^(3S) General buffered write to |
stream. |
printf\^ printf\^(3S) Print using format to |
standard output. |
putc\^ putc\^(3S) Write character to |
standard output. |
putchar\^ putc\^(3S) Write character to |
standard output. |
puts\^ puts\^(3S) Write string to |
standard output. |
putw\^ putc\^(3S) Write word to stream. |
sprintf\^ printf\^(3S) Formatted write to |
string. |
vfprintf vprint(3C) Print using format to |
stream by varargs(5) |
argument list. |
vprintf vprint(3C) Print using format to |
standard output by |
varargs(5) argument list. |
vsprintf vprintf(3C) Print using format to |
stream string by |
varargs(5) argument list. |
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
ctermid\^ ctermid\^(3S) Return file name for |
controlling terminal. |
cuserid\^ cuserid\^(3S) Return login name for |
owner of current process. |
system\^ system\^(3S) Execute shell command. |
tempnam\^ tempnam\^(3S) Create temporary file |
name using directory and |
prefix. |
tmpnam\^ tmpnam\^(3S) Create temporary file |
name. |
tmpfile\^ tmpfile\^(3S) Create temporary file. |
These functions are used to locate characters within a string, copy, concatenate, and compare strings. These functions are automatically located and loaded during the compiling of a C language program. No command line request is needed since these functions are part of the C library. The string manipulation functions are declared in a header file that may be included in the program being compiled. This is accomplished by including the line: I #include <string.h> near the beginning of each file that uses one of these functions.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
strcat\^ string\^(3C) Concatenate two strings. |
strchr\^ string\^(3C) Search string for |
character. |
strcmp\^ string\^(3C) Compares two strings. |
strcpy\^ string\^(3C) Copy string. |
strcspn\^ string\^(3C) Length of initial string |
not containing set of |
characters. |
strlen\^ string\^(3C) Length of string. |
strncat\^ string\^(3C) Concatenate two strings |
with a maximum length. |
strncmp\^ string\^(3C) Compares two strings |
with a maximum length. |
strncpy\^ string\^(3C) Copy string over string |
with a maximum length. |
strpbrk\^ string\^(3C) Search string for any |
set of characters. |
strrchr\^ string\^(3C) Search string backwards |
for character. |
strspn\^ string\^(3C) Length of initial string |
containing set of |
characters. |
strtok\^ string\^(3C) Search string for token |
separated by any of a |
set of characters. |
The following functions and declarations are used for testing and translating ASCII characters. These functions are located and loaded automatically during the compiling of a C language program. No command line request is needed since these functions are part of the C library.
The declarations associated with these functions should be included in the program being compiled. This is accomplished by including the line: I #include <ctype.h>
0 near the beginning of the file being compiled. .H 3 "Character Testing Functions"
These functions can be used to identify characters as uppercase or lowercase letters, digits, punctuation, etc.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
isalnum\^ ctype\^(3C) Is character |
alphanumeric? |
isalpha\^ ctype\^(3C) Is character alphabetic? |
isascii\^ ctype\^(3C) Is integer ASCII |
character? |
iscntrl\^ ctype\^(3C) Is character a control |
character? |
isdigit\^ ctype\^(3C) Is character a digit? |
isgraph\^ ctype\^(3C) Is character a printable |
character? |
islower\^ ctype\^(3C) Is character a |
lowercase letter? |
isprint\^ ctype\^(3C) Is character a printing |
character including |
space? |
ispunct\^ ctype\^(3C) Is character a |
punctuation character? |
isspace\^ ctype\^(3C) Is character a white |
space character? |
isupper\^ ctype\^(3C) Is character an uppercase |
letter? |
isxdigit\^ ctype\^(3C) Is character a hex digit? |
These functions provide translation of uppercase to lowercase, lowercase to uppercase, and integer to ASCII.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
toascii\^ conv\^(3C) Convert integer to |
ASCII character. |
tolower\^ conv\^(3C) Convert character to |
lowercase. |
toupper\^ conv\^(3C) Convert character to |
uppercase. |
These functions are used for accessing and reformatting the systems idea of the current date and time. These functions are located and loaded automatically during the compiling of a C language program. No command line request is needed since these functions are part of the C library.
The header file associated with these functions should be included in the program being compiled. This is accomplished by including the line: I #include <time.h>
0 near the beginning of any file using the time functions.
These functions (except tzset) convert a time such as returned by time(2).
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
asctime\^ ctime\^(3C) Return string |
representation |
of date and time. |
ctime\^ ctime\^(3C) Return string |
representation of |
date and time, given |
integer form. |
gmtime\^ ctime\^(3C) Return Greenwich |
Mean Time. |
localtime\^ ctime\^(3C) Return local time. |
tzset\^ ctime\^(3C) Set time zone field |
from environment |
variable. |
0 .H 3 "Miscellaneous Functions"
These functions support a wide variety of operations. Some of these are numerical conversion, password file and group file access, memory allocation, random number generation, and table management. These functions are automatically located and included in a program being compiled. No command line request is needed since these functions are part of the C library.
Some of these functions require declarations to be included. These are described following the descriptions of the functions. .H 3 "Numerical Conversion"
The following functions perform numerical conversion.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
a64l\^ a64l\^(3C) Convert string to |
base 64 ASCII. |
atof\^ atof\^(3C) Convert string to |
floating. |
atoi\^ atof\^(3C) Convert string to |
integer. |
atol\^ atof\^(3C) Convert string to long. |
frexp\^ frexp\^(3C) Split floating into |
mantissa and exponent. |
l3tol\^ l3tol\^(3C) Convert 3-byte integer |
to long. |
ltol3\^ l3tol\^(3C) Convert long to 3-byte |
integer. |
ldexp\^ frexp\^(3C) Combine mantissa and |
exponent. |
l64a\^ a64l\^(3C) Convert base 64 ASCII |
to string. |
modf\^ frexp\^(3C) Split mantissa into |
integer and fraction. |
The following functions allow access to the Data Encryption Standard (DES) algorithm used on the UNIX operating system. The DES algorithm is implemented with variations to frustrate use of hardware implementations of the DES for key search.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
crypt\^ crypt\^(3C) Encode string. |
encrypt\^ crypt\^(3C) Encode/decode string of |
0s and 1s. |
setkey\^ crypt\^(3C) Initialize for subsequent |
use of encrypt. |
The following functions are used to obtain entries from the group file. Declarations for these functions must be included in the program being compiled with the line: I #include <grp.h>
0
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
endgrent\^ getgrent\^(3C) Close group file being |
processed. |
getgrent\^ getgrent\^(3C) Get next group file |
entry. |
getgrgid\^ getgrent\^(3C) Return next group with |
matching gid. |
getgrnam\^ getgrent\^(3C) Return next group with |
matching name. |
setgrent\^ getgrent\^(3C) Rewind group file being |
processed. |
fgetgrent getgrent(3C) Get next group file entry |
from a specified file. |
These functions are used to search and access information stored in the password file (/etc/passwd). Some functions require declarations that can be included in the program being compiled by adding the line: I #include <pwd.h>
0
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
endpwent\^ getpwent\^(3C) Close password file |
being processed. |
getpw\^ getpw\^(3C) Search password file |
for uid. |
getpwent\^ getpwent\^(3C) Get next password file |
entry. |
getpwnam\^ getpwent\^(3C) Return next entry with |
matching name. |
getpwuid\^ getpwent\^(3C) Return next entry with |
matching uid. |
putpwent\^ putpwent\^(3C) Write entry on stream. |
setpwent\^ getpwent\^(3C) Rewind password file |
being accessed. |
fgetpwent getpwent(3C) Get next password file |
entry from a specified |
file. |
The following functions provide access to several different types of paramenters. None require any declarations.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
getopt\^ getopt\^(3C) Get next option from |
option list. |
getcwd\^ getcwd\^(3C) Return string |
representation of |
current working directory. |
getenv\^ getenv\^(3C) Return string value |
associated with |
environment variable. |
getpass\^ getpass\^(3C) Read string from terminal |
without echoing. |
putenv putenv(3C) Change or add value |
of an environment |
variable. |
The following functions are used to manage hash search tables. The header file associated with these functions should be included in the program being compiled. This is accomplished by including the line: I #include <search.h> near the beginning of any file using the search functions.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
hcreate\^ hsearch\^(3C) Create hash table. |
hdestroy\^ hsearch\^(3C) Destroy hash table. |
hsearch\^ hsearch\^(3C) Search hash table for |
entry. |
The following functions are used to manage a binary tree. The header file associated with these functions should be included in the program being compiled. This is accomplished by including the line: I #include <search.h> near the beginning of any file using the search functions.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
tdelete\^ tsearch\^(3C) Deletes nodes from |
binary tree. |
tfind tsearch(3C) Find element in |
binary tree. |
tsearch\^ tsearch\^(3C) Look for and add |
element to binary |
tree. |
twalk\^ tsearch\^(3C) Walk binary tree. |
The following functions are used to manage a table. Since none of these functions allocate storage, sufficient memory must be allocated before using these functions. The header file associated with these functions should be included in the program being compiled. This is accomplished by including the line: I #include <search.h> near the beginning of any file using the search functions.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
bsearch\^ bsearch\^(3C) Search table using |
binary search. |
lfind lsearch(3C) Find element in |
library tree. |
lsearch\^ lsearch\^(3C) Look for and add |
element in binary |
tree. |
qsort\^ qsort\^(3C) Sort table using |
quick-sort algorithm. |
The following functions provide a means by which memory can be dynamically allocated or freed.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
calloc\^ malloc\^(3C) Allocate zeroed storage. |
free\^ malloc\^(3C) Free previously allocated |
storage. |
malloc\^ malloc\^(3C) Allocate storage. |
realloc\^ malloc\^(3C) Change size of allocated |
storage. |
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
calloc malloc(3X) Allocate zeroed storage. |
free malloc(3X) Free previously allocated |
storage. |
malloc malloc(3X) Allocate storage. |
mallopt malloc(3X) Control allocation |
algorithm. |
mallinfo malloc(3X) Space usage. |
realoc malloc(3X) Change size of |
allocated storage. |
The following functions are used to generate pseudorandom numbers. The functions that end with 48 are a family of interfaces to a pseudorandom number generator based upon the linear congruent algorithm and 48-bit integer arithmetic. The rand\^ and srand\^ functions provide an interface to a multiplicative congruential random number generator with period of 232.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
drand48\^ drand48\^(3C) Random double over |
the interval [0 to 1). |
lcong48\^ drand48\^(3C) Set parameters for |
drand48\^, lrand48\^, |
and mrand48. |
lrand48\^ drand48\^(3C) Random long over the |
interval [0 to 2\v'-0.3'31\v'0.3'). |
mrand48\^ drand48\^(3C) Random long over the |
interval [-2\v'-0.3'31\v'0.3' to 2\v'-0.3'31\v'0.3'). |
rand\^ rand\^(3C) Random integer over the |
interval [0 to 32767). |
seed48\^ drand48\^(3C) Seed the generator for |
drand48\^, lrand48\^, and |
mrand48. |
srand\^ rand\^(3C) Seed the generator |
for rand. |
srand48\^ drand48\^(3C) Seed the generator for |
drand48\^, lrand48\^, and |
mrand48 using a long. |
The functions gsignal\^ and ssignal\^ implement a software facility similar to signal(2) in the "UNIX System Programmer Reference Manual" . This facility enables users to indicate the disposition of error conditions and allows users to handle signals for their own purposes. The declarations associated with these functions can be included in the program being complied by the line I #include <signal.h>
0 These declarations define ASCII names for the 15 software signals.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
gsignal\^ ssignal\^(3C) Send a software signal. |
ssignal\^ ssignal\^(3C) Arrange for handling |
of software signals. |
The following functions do not fall into any previously described category.
0
2 |
FUNCTION REFERENCE BRIEF DESCRIPTION |
abort\^ abort\^(3C) Cause an IOT signal |
to be sent to the |
process. |
abs\^ abs\^(3C) Return the absolute |
integer value. |
ecvt\^ ecvt\^(3C) Convert double to |
string. |
fcvt\^ ecvt\^(3C) Convert double to |
string using Fortran |
Format. |
gcvt\^ ecvt\^(3C) Convert double to |
string using Fortran |
F or E format. |
isatty\^ ttyname\^(3C) Test whether integer |
file descriptor is |
associated with a |
terminal. |
mktemp\^ mktemp\^(3C) Create file name |
using template. |
monitor\^ monitor\^(3C) Cause process to record |
a histogram of program |
counter location. |
swab\^ swab\^(3C) Swap and copy bytes. |
ttyname\^ ttyname\^(3C) Return pathname of |
terminal associated with |
integer file descriptor. |