Intro(3) Introduction to Library Functions Intro(3)NAME
Intro, intro - introduction to functions and libraries
DESCRIPTION
This section describes functions found in various Solaris libraries,
other than those functions described in Section 2 of this manual that
directly invoke UNIX system primitives. Function declarations can be
obtained from the #include files indicated on each page. Pages are
grouped by library and are identified by the library name (or an abbre‐
viation of the library name) after the section number. Collections of
related libraries are grouped into six volumes as described below. A
seventh volume (listed first) contains pages describing the contents of
each shared library and each header used by the functions, macros, and
external variables described in the remaining five volumes.
Library Interfaces and Headers
This volume describes the contents of each shared library and each
header used by functions, macros, and external variables described in
the remaining six volumes.
(3LIB) The libraries described in this section are imple‐
mented as shared objects.
Descriptions of shared objects can include a defi‐
nition of the global symbols that define the shared
objects' public interface, for example SUNW_1.1.
Other interfaces can exist within the shared
object, for example SUNWprivate.1.1. The public
interface provides a stable, committed set of sym‐
bols for application development. The private
interfaces are for internal use only, and could
change at any time.
(3LIBUCB) The SunOS/BSD Compatibility libraries described in
this section are implemented as a shared object.
See (3LIB) above.
(3HEAD) The headers described in this section are used by
functions, macros, and external variables. Headers
contain function prototypes, definitions of sym‐
bolic constants, common structures, preprocessor
macros, and defined types. Each function described
in the remaining five volumes specifies the headers
that an application must include in order to use
that function. In most cases only one header is
required. These headers are present on an applica‐
tion development system; they do have to be present
on the target execution system.
Basic Library Functions
The functions described in this volume are the core C library functions
that are basic to application development.
(3C) These functions, together with those of Section 2,
constitute the standard C library, libc, which is
automatically linked by the C compilation system.
The standard C library is implemented as a shared
object, libc.so. See libc(3LIB) and the "C Compila‐
tion System" chapter of the ANSI C Programmer's
Guide for a discussion. Some functions behave dif‐
ferently in standard-conforming environments. This
behavior is noted on the individual manual pages.
See standards(5).
The libpthread and libthread libraries are filter
libraries on libc that are used for building multi‐
threaded applications: libpthread implements the
POSIX (see standards(5)) threads interface, whereas
libthread implements the Solaris threads interface.
See MULTITHREADED APPLICATIONS, below.
(3C_DB) These functions constitute the threads debugging
library, libc_db. This library is implemented as a
shared object, libc_db.so, but is not automatically
linked by the C compilation system. Specify -lc_db
on the cc command line to link with this library.
See libc_db(3LIB).
(3MALLOC) These functions constitute the various memory allo‐
cation libraries: libmalloc, libbsdmalloc, libmap‐
malloc, libmtmalloc, and libumem. Each of these
libraries is implemented as a shared object (lib‐
malloc.so, libbsdmalloc.so, libmapmalloc.so, libmt‐
malloc.so, and libumem.so). These libraries are not
automatically linked by the C compilation system.
Specify -lmalloc, -lbsdmalloc, -lmapmalloc, -lmt‐
malloc, and -lumem to link with, respectively, lib‐
malloc, libbsdmalloc, libmapmalloc, libmtmalloc,
and libumem. See libmalloc(3LIB), libbsdmal‐
loc(3LIB), libmapmalloc(3LIB), libmtmalloc(3LIB),
and libumem(3LIB).
(3UCB) These functions constitute the source compatibility
(with BSD functions) library. It is implemented as
a shared object, libucb.so, but is not automati‐
cally linked by the C compilation system. Specify
-lucb on the cc command line to link with this
library, which is located in the /usr/ucb subdirec‐
tory. Headers for this library are located within
/usr/ucbinclude. See libucb(3LIBUCB).
Networking Library Functions
The functions described in this volume comprise the various networking
libraries.
(3COMMPUTIL) These functions constitute the communication proto‐
col parser utilities library, libcommputil. This
library is implemented as a shared object, libcomm‐
putil.so, but it is not automatically linked by the
C compilation system. Specify -lcommputil on the cc
command line to link with this library. See lib‐
commputil(3LIB).
(3DLPI) These functions constitute the data link provider
interface library, libdlpi. This library is imple‐
mented as a shared object, libdlpi.so, but it is
not automatically linked by the C compilation sys‐
tem. Specify -ldlpi on the cc command line to link
with this library. See libdlpi(3LIB).
(3GSS) The functions in this library are the routines that
comprise the generic security services API library.
This library is implemented as a shared object,
libgss.so, but it is not automatically linked by
the C compilation system. Specify -lgss on the cc
command line to link with this library. See
libgss(3LIB).
(3LDAP) These functions constitute the lightweight direc‐
tory access protocol library, libldap. This library
is implemented as a shared object, libldap.so, but
is not automatically linked by the C compilation
system. Specify -lldap on the cc command line to
link with this library. See ldap(3LDAP).
(3NSL) These functions constitute the network service
library, libnsl. This library is implemented as a
shared object, libnsl.so, but is not automatically
linked by the C compilation system. Specify -lnsl
on the cc command line to link with this library.
See libnsl(3LIB).
Many base networking functions are also available
in the X/Open networking interfaces library,
libxnet. See section (3XNET) below for more infor‐
mation on the libxnet interfaces.
(3RESOLV) These functions constitute the resolver library,
libresolv. This library is implemented as a shared
object, libresolv.so, but is not automatically
linked by the C compilation system. Specify -lre‐
solv on the cc command line to link with this
library. See libresolv(3LIB).
(3RPC) These functions constitute the remote procedure
call libraries, librpcsvc and librpcsoc. The latter
is provided for compatibility only; new applica‐
tions should not link to it. Both libraries are
implemented as shared objects, librpcsvc.so and
librpcsoc.so, respectively. Neither library is
automatically linked by the C compilation system.
Specify -lrpcsvc or -lrpcsoc on the cc command line
to link with these libraries. See librpcsvc(3LIB)
and librpcsoc(3LIBUCB).
(3SASL) These functions constitute the simple authentica‐
tion and security layer library, libsasl. This
library is implemented as a shared object, lib‐
sasl.so, but it is not automatically linked by the
C compilation system. Specify -lsasl on the cc com‐
mand line to link with this library. See lib‐
sasl(3LIB).
(3SIP) These functions constitute the session initiation
protocol library, libsip. This library is imple‐
mented as a shared object, libsip.so, but it is not
automatically linked by the C compilation system.
Specify -lsip on the cc command line to link with
this library. See libsip(3LIB).
(3SLP) These functions constitute the service location
protocol library, libslp. This library is imple‐
mented as a shared object, libslp.so, but it is not
automatically linked by the C compilation system.
Specify -lslp on the cc command line to link with
this library. See libslp(3LIB).
(3SOCKET) These functions constitute the sockets library,
libsocket. This library is implemented as a shared
object, libsocket.so, but is not automatically
linked by the C compilation system. Specify
-lsocket on the cc command line to link with this
library. See libsocket(3LIB).
(3XNET) These functions constitute X/Open networking inter‐
faces which comply with the X/Open CAE Specifica‐
tion, Networking Services, Issue 4 (September,
1994). This library is implemented as a shared
object, libxnet.so, but is not automatically linked
by the C compilation system. Specify -lxnet on the
cc command line to link with this library. See
libxnet(3LIB) and standards(5) for compilation
information.
Under all circumstances, the use of the Sockets API is recommended over
the XTI and TLI APIs. If portability to other XPGV4v2 (see stan‐
dards(5)) systems is a requirement, the application must use the
libxnet interfaces. If portability is not required, the sockets inter‐
faces in libsocket and libnsl are recommended over those in libxnet.
Between the XTI and TLI APIs, the XTI interfaces (available with
libxnet) are recommended over the TLI interfaces (available with lib‐
nsl).
Curses Library Functions
The functions described in this volume comprise the libraries that pro‐
vide graphics and character screen updating capabilities.
(3CURSES) The functions constitute the following libraries:
libcurses These functions constitute the
curses library, libcurses. This
library is implemented as a
shared object, libcurses.so,
but is not automatically linked
by the C compilation system.
Specify -lcurses on the cc com‐
mand line to link with this
library. See libcurses(3LIB).
libform These functions constitute the
forms library, libform. This
library is implemented as a
shared object, libform.so, but
is not automatically linked by
the C compilation system. Spec‐
ify -lform on the cc command
line to link with this library.
See libform(3LIB).
libmenu These functions constitute the
menus library, libmenu. This
library is implemented as a
shared object, libmenu.so, but
is not automatically linked by
the C compilation system. Spec‐
ify -lmenu on the cc command
line to link with this library.
See libmenu(3LIB).
libpanel These functions constitute the
panels library, libpanel. This
library is implemented as a
shared object, libpanel.so, but
is not automatically linked by
the C compilation system. Spec‐
ify -lpanel on the cc command
line to link with this library.
See libpanel(3LIB).
(3PLOT) These functions constitute the grapnics library,
libplot. This library is implemented as a shared
object, libplot.so, but is not automatically linked
by the C compilation system. Specify -lplot on the
cc command line to link with this library. See lib‐
plot(3LIB).
(3XCURSES) These functions constitute the X/Open curses
library, located in /usr/xpg4/lib/libcurses.so.
This library provides a set of internationalized
functions and macros for creating and modifying
input and output to a terminal screen. Included in
this library are functions for creating windows,
highlighting text, writing to the screen, reading
from user input, and moving the cursor. X/Open
Curses is designed to optimize screen update activ‐
ities. The X/Open Curses library conforms fully
with Issue 4 of the X/Open Extended Curses specifi‐
cation. See libcurses(3XCURSES).
Realtime Library Functions
The functions described in this volume constitute the realtime
libraries.
(3AIO) These functions constitute the asynchronous I/O
library, liaio. This library is implemented as a
shared object, libaio.so, but is not automatically
linked by the C compilation system. Specify -laio
on the cc command line to link with this library.
See libaio(3LIB).
(3RT) These functions constitute the POSIX.4 realtime
library, librt. It is implemented as a shared
object, librt.so, but is not automatically linked
by the C compilation system. Specify -lrt on the cc
command line to link with this library. Note that
the former name for this library, libposix4, is
maintained for backward compatibility but should be
avoided. See librt(3LIB).
Extended Library Functions
The functions described in this volume comprise various specialized
libraries that are not limited to the following:
(3BSM) These functions constitute the basic security
library, libbsm. This library is implemented as a
shared object, libbsm.so, but is not automatically
linked by the C compilation system. Specify -lbsm
on the cc command line to link with this library.
See libbsm(3LIB).
(3CFGADM) These functions constitute the configuration admin‐
istration library, libcfgadm. This library is
implemented as a shared object, libcfgadm.so, but
is not automatically linked by the C compilation
system. Specify -lcfgadm on the cc command line to
link with this library. See libcfgadm(3LIB).
(3CONTRACT) These functions constitute the contract management
library, libcontract. This library is implemented
as a shared object, libcontract.so, but is not
automatically linked by the C compilation system.
Specify -lcontract on the cc command line to link
with this library. See libcontract(3LIB).
(3CPC) These functions constitute the CPU performance
counter library, libcpc, and the process context
library, libpctx. These libraries are implemented
as shared objects, libcpc.so and libpctx.so,
respectively, but are not automatically linked by
the C compilation system. Specify -lcpc or -lpctx
on the cc command line to link with these
libraries. See libcpc(3LIB) and libpctx(3LIB).
(3DAT) These functions constitute the direct access trans‐
port library, libdat. This library is implemented
as a shared object, libdat.so, but is not automati‐
cally linked by the C compilation system. Specify
-ldat on the cc command line to link with this
library. See libdat(3LIB).
(3DEVID) These functions constitute the device ID library,
libdevid. This library is implemented as a shared
object, libdevid.so, but is not automatically
linked by the C compilation system. Specify -ldevid
on the cc command line to link with this library.
See libdevid(3LIB).
(3DEVINFO) These functions constitute the device information
library, libdevinfo. This library is implemented as
a shared object, libdevinfo.so, but is not automat‐
ically linked by the C compilation system. Specify
-ldevinfo on the cc command line to link with this
library. See libdevinfo(3LIB).
(3DMI) These functions constitute the DMI libraries, lib‐
dmi, libdmici, and libdmimi. These libraries are
implemented as shared objects, libdmi.so, libd‐
mici.so, and libdmimi.so, respectively, but are not
automatically linked by the C compilation system.
Specify -ldmi, -ldmici, or -ldmimi on the cc com‐
mand line to link with these libraries. See lib‐
dmi(3LIB), libdmici(3LIB), and libdmimi(3LIB).
(3ELF) These functions constitute the ELF access library,
libelf, (Extensible Linking Format). This library
provides the interface for the creation and analy‐
ses of "elf" files; executables, objects, and
shared objects. libelf is implemented as a shared
object, libelf.so, but is not automatically linked
by the C compilation system. Specify -lelf on the
cc command line to link with this library. See
libelf(3LIB).
(3EXACCT) These functions constitute the extended accounting
access library, libexacct, and the project database
access library, libproject. These libraries are
implemented as shared objects, libexacct.so and
libproject.so, respectively, but are not automati‐
cally linked by the C compilation system. Specify
-lexacct or -lproject on the cc command line to
link with these libraries. See libexacct(3LIB) and
libproject(3LIB).
(3FM) These functions constitute the fault management
events library. This library is implemented as a
shared object, libfmevent.so, but is not automati‐
cally linked by the C compilation system. Specify
-lfmevent on the cc command line to link with this
library. See libfmevent(3LIB).
(3GEN) These functions constitute the string pattern-
matching and pathname manipulation library, libgen.
This library is implemented as a shared object,
libgen.so, but is not automatically linked by the C
compilation system. Specify -lgen on the cc command
line to link with this library. See libgen(3LIB).
(3HBAAPI) These functions constitute the common fibre channel
HBA information library, libhbaapi. This library is
implemented as a shared object, libhbaapi.so, but
is not automatically linked by the C compilation
system. Specify -lhbaapi on the cc command line to
link with this library. See libhbaapi(3LIB).
(3KSTAT) These functions constitute the kernel statistics
library, which is implemented as a shared object,
libkstat.so, but is not automatically linked by the
C compilation system. Specify -lkstat on the cc
command line to link with this library. See libk‐
stat(3LIB).
(3KVM) These functions allow access to the kernel's vir‐
tual memory library, which is implemented as a
shared object, libkvm.so, but is not automatically
linked by the C compilation system. Specify -lkvm
on the cc command line to link with this library.
See libkvm(3LIB).
(3LAYOUT) These functions constitute the layout service
library, which is implemented as a shared object,
liblayout.so, but is not automatically linked by
the C compilation system. Specify -llayout on the
cc command line to link with this library. See
liblayout(3LIB).
(3LGRP) These functions constitute the locality group
library, which is implemented as a shared object,
liblgrp.so, but is not automatically linked by the
C compilation system. Specify -llgrp on the cc com‐
mand line to link with this library. See
liblgrp(3LIB).
(3M) These functions constitute the mathematical
library, libm. This library is implemented as a
shared object, libm.so, but is not automatically
linked by the C compilation system. Specify -lm on
the cc command line to link with this library. See
libm(3LIB).
(3MAIL) These functions constitute the user mailbox manage‐
ment library, libmail. This library is implemented
as a shared object, libmail.so, but is not automat‐
ically linked by the C compilation system. Specify
-lmail on the cc command line to link with this
library. See libmail(3LIB).
(3MP) These functions constitute the integer mathematical
library, libmp. This library is implemented as a
shared object, libmp.so, but is not automatically
linked by the C compilation system. Specify -lmp on
the cc command line to link with this library. See
libmp(3LIB).
(3MPAPI) These functions constitute the Common Mulitipath
Management library, libMPAPI. This library is
implemented as a shared object, libMPAPI.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -lMPAPI on the cc command line to link
with this library. See libMPAPI(3LIB).
(3MVEC) These functions constitute the vector mathematical
library, libmvec. This library is implemented as a
shared object, libmvec.so, but is not automatically
linked by the C compilation system. Specify -lmvec
on the cc command line to link with this library.
See libmvec(3LIB).
(3NVPAIR) These functions constitute the name-value pair
library, libnvpair. This library is implemented as
a shared object, libnvpair.so, but is not automati‐
cally linked by the C compilation system. Specify
-lnvpair on the cc command line to link with this
library. See libnvpair(3LIB).
(3PAM) These functions constitute the pluggable uuthenti‐
cation module library, libpam. This library is
implemented as a shared object, libpam.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -lpam on the cc command line to link
with this library. See libpam(3LIB).
(3PAPI) These functions constitute the Free Standards Group
Open Printing API (PAPI) library, libpapi. This
library is implemented as a shared object, lib‐
papi.so, but is not automatically linked by the C
compilation system. Specify -lpapi on the cc com‐
mand line to link with this library. See lib‐
papi(3LIB).
(3PICL) These functions constitute the PICL library,
libpicl. This library is implemented as a shared
object, libpicl.so, but is not automatically linked
by the C compilation system. Specify -lpicl on the
cc command line to link with this library. See
libpicl(3LIB) and libpicl(3PICL).
(3PICLTREE) These functions constitute the PICL plug-in
library, libpicltree. This library is implemented
as a shared object, libpicltree.so, but is not
automatically linked by the C compilation system.
Specify -lpicltree on the cc command line to link
with this library. See libpicltree(3LIB) and libpi‐
cltree(3PICLTREE).
(3POOL) These functions constitute the pool configuration
manipulation library, libpool. This library is
implemented as a shared object, libpool.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -lpool on the cc command line to link
with this library. See libpool(3LIB).
(3PROJECT) These functions constitute the project database
access library, libproject. This library is imple‐
mented as a shared object, libproject.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -lproject on the cc command line to
link with this library. See libproject(3LIB).
(3RSM) These functions constitute the remote shared memory
library, librsm. This library is implemented as a
shared object, librsm.so, but is not automatically
linked by the C compilation system. Specify -lrsm
on the cc command line to link with this library.
See librsm(3LIB).
(3SCF) These functions constitute the object-caching mem‐
ory allocation library, libscf. This library is
implemented as a shared object, libscf.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -lscf on the cc command line to link
with this library. See libscf(3LIB).
(3SEC) These functions constitute the file access control
library, libsec. This library is implemented as a
shared object, libsec.so, but is not automatically
linked by the C compilation system. Specify -lsec
on the cc command line to link with this library.
See libsec(3LIB).
(3SECDB) These functions constitute the security attributes
database library, libsecdb. This library is imple‐
mented as a shared object, libsecdb.so, but is not
automatically linked by the C compilation system.
Specify -lsecdb on the cc command line to link with
this library. See libsecdb(3LIB).
(3SMARTCARD) These functions constitute the smartcard library,
libsmartcard. This library is implemented as a
shared object, libsmartcard.so, but is not automat‐
ically linked by the C compilation system. Specify
-lsmartcard on the cc command line to link with
this library. See libsmartcard(3LIB).
(3SNMP) These functions constitute the SNMP libraries, lib‐
ssagent and libssasnmp. These libraries are imple‐
mented as shared objects, libssagent.so and lib‐
ssasnmp.so, respectively, but are not automatically
linked by the C compilation system. Specify
-lssagent or -lssasnmp on the cc command line to
link with these libraries. See libssagent(3LIB) and
libssasnmp(3LIB).
(3SYSEVENT) These functions constitute the system event
library, libsysevent. This library is implemented
as a shared object, libsysevent.so, but is not
automatically linked by the C compilation system.
Specify -lsysevent on the cc command line to link
with this library. See libsysevent(3LIB).
(3TECLA) These functions constitute the interactive command-
line input library, libtecla. This library is
implemented as a shared object, libtecla.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -ltecla on the cc command line to link
with this library. See libtecla(3LIB).
(3TNF) These functions constitute the TNF libraries,
libtnf, libtnfctl, and libtnfprobe. These libraries
are implemented as shared objects, libtnf.so, libt‐
nfctl.so, and libtnfprobe.so, respectively, but are
not automatically linked by the C compilation sys‐
tem. Specify -ltnf, -ltnfctl, or -ltnfprobe on the
cc command line to link with these libraries. See
libtnfctl(3TNF) and libtnfctl(3LIB).
(3TSOL) These functions constitute the Trusted Extensions
library, libtsol, and the Trusted Extensions net‐
work library, libtsnet. These libraries are imple‐
mented as shared objects, libtsol.so and libt‐
snet.so, but are not automatically linked by the C
compilation system. Specify -ltsol or -ltsnet on
the cc command line to link with these libraries.
See libtsol(3LIB) and libtsnet(3LIB).
(3UUID) These functions constitute the universally unique
identifier library, libuuid. This library is imple‐
mented as a shared object, libuuid.so, but is not
automatically linked by the C compilation system.
Specify -luuid on the cc command line to link with
this library. See libuuid(3LIB).
(3VOLMGT) These functions constitute the volume management
library, libvolmgt. This library is implemented as
a shared object, libvolmgt.so, but is not automati‐
cally linked by the C compilation system. Specify
-lvolmgt on the cc command line to link with this
library. See libvolmgt(3LIB).
(3WSREG) These functions constitute the product install reg‐
istry library, libwsreg. This library is imple‐
mented as a shared object, libwsreg.so, but is not
automatically linked by the C compilation system.
Specify -lwsreg on the cc command line to link with
this library. See libwsreg(3LIB).
(3XTSOL) These functions constitute the Trusted Extensions
to the X windows library, libXtsol. This library is
implemented as a shared object, libXtsol.so, but is
not automatically linked by the C compilation sys‐
tem. Specify -lX11 and then -lXtsol on the cc com‐
mand line to link with this library. See
libXtsol(3LIB).
Multimedia Library Functions
(3MLIB) These functions constitute the mediaLib library,
libmlib. This library is implemented as a shared
object, libmlib.so, but is not automatically linked
by the C compilation system. Specify -lmlib on the
cc command line to link with this library. See
libmlib(3LIB).
DEFINITIONS
A character is any bit pattern able to fit into a byte on the machine.
In some international languages, however, a "character" might require
more than one byte, and is represented in multi-bytes.
The null character is a character with value 0, conventionally repre‐
sented in the C language as \0. A character array is a sequence of
characters. A null-terminated character array (a string) is a sequence
of characters, the last of which is the null character. The null string
is a character array containing only the terminating null character. A
null pointer is the value that is obtained by casting 0 into a pointer.
C guarantees that this value will not match that of any legitimate
pointer, so many functions that return pointers return NULL to indicate
an error. The macro NULL is defined in <stdio.h>. Types of the form
size_t are defined in the appropriate headers.
MULTITHREADED APPLICATIONS
Both POSIX threads and Solaris threads can be used within the same
application. Their implementations are completely compatible with each
other; however, only POSIX threads guarantee portability to other
POSIX-conforming environments.
The libpthread(3LIB) and libthread(3LIB) libraries are implemented as
filters on libc(3LIB).
When compiling a multithreaded application, the -mt option must be
specified on the command line.
There is no need for a multithreaded application to link with -lthread.
An application must link with -lpthread only when POSIX semantics for
fork(2) are desired. When an application is linked with -lpthread, a
call to fork() assumes the behavior fork1(2) rather than the default
behavior that forks all threads.
When compiling a POSIX-conforming application, either the
_POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS option must be specified on
the command line. For POSIX.1c-conforming applications, define the
_POSIX_C_SOURCE flag to be >= 199506L:
cc -mt [ flag... ] file... -D_POSIX_C_SOURCE=199506L -lpthread
For POSIX behavior with the Solaris fork() and fork1() distinction,
compile as follows:
cc -mt [ flag... ] file... -D_POSIX_PTHREAD_SEMANTICS
For Solaris threads behavior, compile as follows:
cc -mt [ flag... ] file...
Unsafe interfaces should be called only from the main thread to ensure
the application's safety.
MT-Safe interfaces are denoted in the ATTRIBUTES section of the func‐
tions and libraries manual pages (see attributes(5)). If a manual page
does not state explicitly that an interface is MT-Safe, the user should
assume that the interface is unsafe.
REALTIME APPLICATIONS
The environment variable LD_BIND_NOW must be set to a non-null value to
enable early binding. Refer to the "When Relocations are Processed"
chapter in for additional information.
FILES
INCDIR usually /usr/include
LIBDIR usually either /lib or /usr/lib (32-bit) or
either /lib/64 or /usr/lib/64 (64-bit)
LIBDIR/*.so shared libraries
SEE ALSOar(1), cc(1B), ld(1), fork(2), stdio(3C), attributes (5), standards(5)
ANSI C Programmer's Guide
DIAGNOSTICS
For functions that return floating-point values, error handling varies
according to compilation mode. Under the -Xt (default) option to cc,
these functions return the conventional values 0, ±HUGE, or NaN when
the function is undefined for the given arguments or when the value is
not representable. In the -Xa and -Xc compilation modes, ±HUGE_VAL is
returned instead of ±HUGE. (HUGE_VAL and HUGE are defined in math.h to
be infinity and the largest-magnitude single-precision number, respec‐
tively.)
NOTES
None of the functions, external variables, or macros should be rede‐
fined in the user's programs. Any other name can be redefined without
affecting the behavior of other library functions, but such redefini‐
tion might conflict with a declaration in an included header.
The headers in INCDIR provide function prototypes (function declara‐
tions including the types of arguments) for most of the functions
listed in this manual. Function prototypes allow the compiler to check
for correct usage of these functions in the user's program. The lint
program checker can also be used and will report discrepancies even if
the headers are not included with #include statements. Definitions for
Sections 2 and 3C are checked automatically. Other definitions can be
included by using the -l option to lint. (For example, -lm includes
definitions for libm.) Use of lint is highly recommended. See the lint
chapter in .
Users should carefully note the difference between STREAMS and stream.
STREAMS is a set of kernel mechanisms that support the development of
network services and data communication drivers. It is composed of
utility routines, kernel facilities, and a set of data structures. A
stream is a file with its associated buffering. It is declared to be a
pointer to a type FILE defined in <stdio.h>.
In detailed definitions of components, it is sometimes necessary to
refer to symbolic names that are implementation-specific, but which are
not necessarily expected to be accessible to an application program.
Many of these symbolic names describe boundary conditions and system
limits.
In this section, for readability, these implementation-specific values
are given symbolic names. These names always appear enclosed in curly
brackets to distinguish them from symbolic names of other implementa‐
tion-specific constants that are accessible to application programs by
headers. These names are not necessarily accessible to an application
program through a header, although they can be defined in the documen‐
tation for a particular system.
In general, a portable application program should not refer to these
symbolic names in its code. For example, an application program would
not be expected to test the length of an argument list given to a rou‐
tine to determine if it was greater than {ARG_MAX}.
SunOS 5.10 19 Apr 2010 Intro(3)