|
Introduction to Library Functions | Intro(3) |
| Intro, intro - introduction to functions and libraries |
|
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 abbreviation of the library name) after the section number. Collections of related libraries are grouped into five volumes as described below. A sixth 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 five volumes.
- (3LIB)
- The libraries described in this section are implemented as shared objects.
Descriptions of shared objects may include a definition of the global symbols that define the shared objects' public interface, for example SUNW_1.1. Other interfaces may exist within the shared object, for example SUNW_private.1.1. The public interface provides
a stable, committed set of symbols for application development. The private interfaces are for internal use only, and may change at any time.
For many shared objects, an archive library is provided for backward compatibility on 32-bit systems only. Use of these libraries may restrict an applications ability to migrate between different Solaris releases. As dynamic linking is the preferred compilation method on Solaris, the use of
these libraries is discouraged.
- (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 symbolic 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 application 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,
and as an archive, libc.a. C programs are linked with the shared object version of the standard C library by default. Specify -Bstatic or -dn on the cc command line to link with the archive version. See libc(3LIB), cc(1B) for other overrides, and the "C Compilation System" chapter
of the ANSI C Programmer's Guide for a discussion. Some functions behave differently in standard-conforming environments. This behavior is noted on the individual manual pages. See standards(5).
- (3DL)
- These functions constitute the dynamic linking library, libdl. This library is implemented as a shared object, libdl.so, but is not automatically linked by the C compilation system. Specify -ldl on
the cc command line to link with this library. See libdl(3LIB).
- (3MALLOC)
- These functions constitute the various memory allocation libraries: libmalloc, libbsdmalloc, libmapmalloc, and libmtmalloc. Each of these libraries is implemented as a shared
object (libmalloc.so, libbsdmalloc.so, libmapmalloc.so, and libmtmalloc.so) and all except libmtmalloc are implemented as archives (libmalloc.a, libbsdmalloc.a, libmapmalloc.a). These libraries are not automatically linked by the C compilation system. Specify -lmalloc, -lbsdmalloc, -lmapmalloc, and -lmtmalloc to link with, respectively, libmalloc, libbsdmalloc, libmapmalloc, and libmtmalloc. See libmalloc(3LIB), libbsdmalloc(3LIB), libmapmalloc(3LIB), and libmtmalloc(3LIB).
- (3UCB)
- These functions constitute the Source Compatibility (with BSD functions) library. It is implemented as a shared object, libucb.so, and as an archive, libucb.a, but is not automatically 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 subdirectory. 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.
- (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.1, 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 Directory 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, and as an archive, libnsl.a, 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 information on the libxnet interfaces.
- (3RAC)
- These functions constitute the remote asynchronous calls library, librac. This library is implemented as a shared object, librac.so, and as an archive, librac.a, but is not automatically linked
by the C compilation system. Specify -lrac on the cc command line to link with this library. See librac(3LIB).
- (3RESOLV)
- These functions constitute the resolver library, libresolv. This library is implemented as a shared object, libresolv.so, and as an archive, libresolv.a, but is not automatically linked by
the C compilation system. Specify -lresolv 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 applications should not link to it. Both libraries are implemented as shared
objects, librpcsvc.so and librpcsoc.so, respectively, and librpcsvc is implemented as an archive, librpcsvc.a. 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).
- (3SLP)
- These functions constitute the Service Location Protocol library, libslp. This library is implemented as a shared object, libslp.so.1, but it is not automatically linked by the C compilation system. See libslp(3LIB)
- (3SOCKET)
- These functions constitute the sockets library, libsocket. This library is implemented as a shared object, libsocket.so, and as an archive, libsocket.a, 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).
- (3XFN)
- These functions constitute the X/Open Federated Naming library, libxfn. This library is implemented as a shared object, libxfn.so, but is not automatically linked by the C compilation system. Specify -lxfn on the cc command line to link with this library. See libxfn(3LIB), xfn(3XFN), fns(5), and standards(5).
- (3XNET)
- These functions constitute X/Open networking interfaces which comply with the X/Open CAE Specification, 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 standards(5))
systems is a requirement, the application must use the libxnet interfaces. If portability is not required, the sockets interfaces 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 libnsl).
|
Curses Library Functions
|
The functions described in this volume comprise the libraries that provide 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, and as an archive, libcurses.a, but is not automatically linked by the
C compilation system. Specify -lcurses on the cc command 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, and as an archive, libforms.a, but is not automatically linked by the C compilation
system. Specify -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, and as an archive, libmenu.a, but is not automatically linked by the C compilation
system. Specify -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, and as an archive, libpanel.a, but is not automatically linked by the C
compilation system. Specify -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, and as an archive, libplot.a, but is not automatically linked by the C compilation
system. Specify -lplot on the cc command line to link with this library. See libplot(3LIB).
- (3XCURSES)
- These functions constitute the X/Open Curses library, located in /usr/xpg4/lib/libcurses.so.1. 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 activities. The X/Open Curses library conforms fully with Issue 4 of the X/Open Extended Curses specification.
|
Threads and Realtime Library Functions
|
The functions described in this volume constitute the threads and 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).
- (3DOOR)
- These functions constitute the doors library, libdoor. This library is implemented as a shared object, libdoor.so, but is not automatically linked by the C compilation system. Specify -ldoor on the cc command line to link with this library.
- (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).
- (3SCHED)
- These functions constitute the LWP scheduling library, libsched. This library is implemented as a shared object, libsched.so, but is not automatically linked by the C compilation system. Specify -lsched on the cc command line to link with this library. .
- (3THR)
- These functions constitute the threads libraries, libpthread, libthread, and libthread_db. The libpthread and libthread libraries are used for building multithreaded
applications: libpthread implements the POSIX (see standards(5)) threads interface, whereas libthread implements the Solaris
threads interface. The libthread_db library is useful for building debuggers for 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.
When POSIX and Solaris threads are used in the same application, if there are calls with the same name but different semantics, the POSIX semantic supersedes the Solaris threads semantic. For example, the call to fork() will imply the fork1() semantic in a program
linked with the POSIX threads library, whether or not it is also linked with -lthread (Solaris threads).
The libpthread, libthread, and libthread_db libraries are implemented as shared objects, libpthread.so, libthread_db.so, and libthread.so, respectively. These libraries are not
automatically linked by the C compilation system. Specify -lpthread, -lthread, or -lthread_db on the cc command line to link with these libraries. See libpthread(3LIB), libthread(3LIB), and libthread_db(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, and as an archive, libbsm.a, 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 administration 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).
- (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).
- (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 automatically 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, libdmi, libdmici, and libdmimi. These libraries are implemented as shared objects, libdmi.so, libdmici.so, and libdmimi.so, respectively, but are not automatically linked by the C compilation system. Specify -ldmi, -ldmici, or -ldmimi on the cc command line to link with these libraries. See libdmi(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 analyses of "elf" files; executables, objects, and shared objects. libelf is implemented as a shared object, libelf.so, and as an archive, libelf.a, 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 automatically 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).
- (3GEN)
- These functions constitute the string pattern-matching and pathname manipulation library, libgen. This library is implemented as a shared object, libgen.so, and as an archive, libgen.a, 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).
- (3KSTAT)
- These functions constitute the kernel statistics library, which is implemented as a shared object, libkstat.so, and as an archive, libkstat.a, but is not automatically linked by the C compilation system. Specify -lkstat on the cc command line to link with this library. See libkstat(3LIB).
- (3KVM)
- These functions allow access to the kernel's virtual memory library, which is implemented as a shared object, libkvm.so, and as an archive, libkvm.a, 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).
- (3M)
- These functions constitute the mathematical library, libm. This library is implemented as a shared object, libm.so, and as an archive, libm.a, but is not automatically linked by the C compilation
system. Specify -lm on the cc command line to link with this library.
- (3MAIL)
- These functions constitute the user mailbox management library, libmail. This library is implemented as a shared object, libmail.so, and as an archive, libmail.a, but is not automatically linked
by the C compilation system. Specify -lmail on the cc command line to link with this library.
- (3MP)
- These functions constitute the integer mathematical library, libmp. This library is implemented as a shared object, libmp.so, and as an archive, libmp.a, 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).
- (3NVPAIR)
- These functions constitute the name-value pair library, libnvpair. This library is implemented as a shared object, libnvpair.so, but is not automatically 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 Authentication Module (PAM) library, libpam. This library is implemented as a shared object, libpam.so, and as an archive, libpam.a, but is not automatically
linked by the C compilation system. Specify -lpam on the cc command line to link with this library. See libpam(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 libpicltree(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 system. 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 implemented as a shared object, libproject.so, but is not automatically linked by the C compilation system. 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).
- (3SEC)
- These functions constitute the file access control library, libsec. This library is implemented as a shared object, libsec.so, and as an archive, libsec.a, 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 implemented 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).
- (3SNMP)
- These functions constitute the SNMP libraries, libdssagent and libdssasnmp. These libraries are implemented as shared objects, libssagent.so and libssasnmp.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).
- (3TNF)
- These functions constitute the TNF libraries, libtnf, libtnfctl, and libtnfprobe. These libraries are implemented as shared objects, libtnf.so, libtnfctl.so,
and libtnfprobe.so, respectively, but are not automatically linked by the C compilation system. Specify -ltnf, -ltnfctl, or -ltnfprobe on the cc command line to link with these libraries. See libtnfctl(3TNF) and libtnfctl(3LIB).
- (3VOLMGT)
- These functions constitute the volume management library, libvolmgt. This library is implemented as a shared object, libvolmgt.so, and as an archive, libvolmgt.a, but is not automatically 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 registry library, libwsreg. This library is implemented 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).
|
|
|
A character is any bit pattern able to fit into a byte on the machine. In some international languages, however, a "character" may require more than one byte, and is represented in multi-bytes.
The null character is a character with value 0, conventionally represented 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.
|
|
-
INCDIR
- usually /usr/include
-
LIBDIR
- usually /usr/lib (32-bit) or /usr/lib/sparcv9(64-bit)
-
LIBDIR/libc.so
-
-
LIBDIR/libc.a
-
-
LIBDIR/libgen.a
-
-
LIBDIR/libm.a
-
-
LIBDIR/libsfm.sa
-
-
/usr/lib/libc.so.1
-
|
|
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, respectively.)
|
|
When compiling a multithreaded application, either the _POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS flag or the -mt option must be specified on the command line. This enables special definitions for functions only applicable to multithreaded applications.
For POSIX.1c-conforming applications, define the _POSIX_C_SOURCE flag to be >= 199506L:
|
cc [flag...] file... -D_POSIX_C_SOURCE=199506L -lpthread
|
For POSIX behavior with the Solaris fork() and fork1() distinction, compile as follows:
|
cc [flag...] file... -D_POSIX_PTHREAD_SEMANTICS -lthread
|
For Solaris threads behavior, compile as follows:
|
cc - mt [ flag... ] file...
|
When building a singlethreaded application, the above flag arguments should be undefined.
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 functions 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.
|
|
Be sure to have set the environment variable LD_BIND_NOW to a non-null value to enable early binding. Refer to the "When Relocations are Processed" chapter in Linker and Libraries Guide
for additional information.
|
|
None of the functions, external variables, or macros should be redefined in the user's programs. Any other name may be redefined without affecting the behavior of other library functions, but such redefinition may conflict with a declaration in an included header.
The headers in INCDIR provide function prototypes (function declarations 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 may also be used and will report discrepancies even if the headers are not included with #include statements. Definitions for Sections 2, 3C, and 3S 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 Performance Profiling Tools.
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 implementation-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 may be defined in the documentation 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 routine to determine if it was greater than {ARG_MAX}.
|
| |