POSIX Programmer's Guide


This guide, intended as an explanation of the POSIX standard and as a reference for the POSIX.1 programming library, helps you write more portable programs. Most UNIX systems today are POSIX compliant because the federal government requires it for its purchases. Even OSF and UI agree on support for POSIX.Unfortunately, given the manufacturer's documentation, it can be difficult to distinguish system-specific features from those features defined by POSIX. The POSIX Programmer's Guide is especially helpful if you ...

See more details below
Available through our Marketplace sellers.
Other sellers (Paperback)
  • All (26) from $1.99   
  • New (1) from $70.00   
  • Used (25) from $1.99   
Sort by
Page 1 of 1
Showing All
Note: Marketplace items are not eligible for any BN.com coupons and promotions
Seller since 2015

Feedback rating:



New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

Brand new.

Ships from: acton, MA

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Page 1 of 1
Showing All
Sort by
Sending request ...


This guide, intended as an explanation of the POSIX standard and as a reference for the POSIX.1 programming library, helps you write more portable programs. Most UNIX systems today are POSIX compliant because the federal government requires it for its purchases. Even OSF and UI agree on support for POSIX.Unfortunately, given the manufacturer's documentation, it can be difficult to distinguish system-specific features from those features defined by POSIX. The POSIX Programmer's Guide is especially helpful if you are writing programs that must run on multiple UNIX platforms. This guide also helps you convert existing UNIX programs for POSIX compliance.Contents include:

  • Introduction to POSIX.
  • Basics of writing a POSIX-compliant program.
  • Input/output facilities of the Standard C library.
  • The file system as defined by POSIX.
  • Operations of POSIX Input/Output system, pipes, and FIFOs.
  • Creating and terminating processes and signals.
  • Obtaining information about the environment.
  • Communication line settings and a cu-like utility.
  • POSIX and Standard C, including features and portability pitfalls.
  • Internationalization.
  • Complete list of library functions in alphabetic order.
  • Complete list of data structures and their members.
  • All error codes.
  • Standard headers and the information that they define.
  • Related publications.
Read More Show Less

Product Details

  • ISBN-13: 9780937175736
  • Publisher: O'Reilly Media, Incorporated
  • Publication date: 4/28/1991
  • Series: Computer Science Series
  • Edition description: 1st ed
  • Edition number: 1
  • Pages: 640
  • Product dimensions: 7.00 (w) x 9.19 (h) x 1.34 (d)

Read an Excerpt

Chapter 2: Developing POSIX Applications

In this chapter, we discuss how to access the C language bindings as well as the POSIX libraries. We look at what a system vendor must provide for a system to be POSIX-compliant. We demonstrate two different program development problems-porting an existing program to a POSIX-conforming system, and developing a program that is designed to be POSIX-compliant.

The POSIX Development Environment

POSIX provides portability at the source level. This means that you transport your source program to the target machine, compile it with the Standard C compiler using conforming headers, and link it with the standard libraries. The system vendor provides the compiler, the libraries, and headers. Strictly speaking, these are all black boxes and you do not need to know how they work. However, it is instructive to look into some of these black boxes, and we will do that in this chapter.

The Standard C Compiler

Each POSIX-conforming system must provide a POSIX-conformance document. This document describes the behavior of the system for all implementation-defined features identified in the standard. For maximum portability, applications should not depend upon any particular behavior that is implementation-specific. The conformance document is dull reading, but it is valuable because it contains information on how to access the standard C language bindings.

For AT&T UNIX System V Release 4, the Standard C language bindings are accessed by specifying -Xc on the cc command line. The command:

cc -Xc subs.c main.c -o prog

will compile subs. c and main. c and link them together to form prog.

The Open SoftwareFoundation's OSF/1 operating system comes with the GNU C compiler.* The Standard C bindings are accessed by specifying -ansi on the cc command line. A command there looks like:

cc -ansi subs.c main.c -o Prog

For other systems, you will have to buy (or at least look at) the conformance document, look for on-line manual pages, or ask someone.

On most systems, the default is not Standard C but a C compiler that is compatible with the historic behavior of that system. in many cases, your program will not notice the difference. The historic behavior probably includes defining symbols that are not part of Standard C and POSIX. It is easier to specify strict conformance and clean up small problems as you go than to deal with a large mess at the end of the project.

Strict ANSI conformance is a good answer to the question: "What can I do to make my programs more portable?"

POSIX and C Libraries

POSIX defines a library of functions for conforming programs to use. Many of these functions are also defined in the Standard C library.

Each function in the library requires you to include at least one header. This is done with a statement like:

#include ‹stdio.h›

The header provides a prototype for the function, plus any necessary types and additional macros to facilitate using the function.

The POSIX and C standards do not require headers to be source files. They may be some sort of magic command to the compiler. The standards specify only the net effect of including a header. On most systems (and all UNIX systems) the headers are files that live in the directory /usr/ include.

Many systems support multiple development environments. How do you get the POSIX headers? You must define the symbol _POSIX_SOURCE before including any of the standard headers. The best way to do this is to place the statement:

#define __POSIX_SOURCE

at the start of each file.

You could also place the option -D_POSIX_SOURCE on the cc command-line; however, this is error prone. It is better to put the #define into your source file along with the rest of your program. As a rule of thumb, restrict command-line macro definitions to things that change from one compile to the next. For example, -DNDEBUG turns off the debug test in assert ( ). Use #define statements for symbols that must always be defined, such as _POSIX_SOURCE.

On some systems the header files you include do not do much. They merely select one of several possible other headers based on the symbols that you have defined. This might look like:

#include ‹common/stdio.h› #ifdef _SYSV_SOURCE #include
‹sysv/stdio.h› #endif #ifdef _BSD_SOURCE #include
‹BSD/stdio.h› #endif #ifdef _POSIX_SOURCE #include
‹POSIX/stdio.h› #endif

Under most circumstances, you do not need to know how the system defines the correct symbols. The Header Files section in this book details every POSIX and Standard C header file. If you follow the rules in this section, the standards guarantee the following:

1. Every symbol required by the standards will be defined with a meaningful value.

2. No symbol not permitted by the standards will be defined. This protects your application from namespace pollution.* Of course, if you include a header not specified by the standard, all bets are off.

Converting Existing Programs

Porting an existing application to run on a new system requires two major steps. These tasks can range from very easy to almost impossible. First, you have to transport the program to the target computer. Second, you have to modify the program to run in the new environment. The POSIX standard (and this book) can help you in both steps.

The POSIX standard defines the format of both the cpio and tar archives. You can create an archive with the command:

1s files cpio -oc ›archive


tar -cf archive files

and load it onto the target with the command:

cpio -ic ‹archive


tar -xvf archive

See your system documentation for the exact details. You will still need some form of compatible disk, tape, or network to move the archive file to the target.

Once the files are moved, you will have to convert system-specific function calls to calls defined by the POSIX standard. There are several aids in the reference guide in this book that are designed to make conversion easier. For every function defined by either POSIX or Standard C, there is a conversion entry in the Functions section. This entry points out the changes that may be required to convert the function from older UNIX systems to ones that conform to the POSIX standard. The Porting section covers functions in BSD and System V that are not in POSIX and suggests ways to build equivalent functions using POSIX calls....

Read More Show Less

Table of Contents

Table of Contents
The POSIX Standard Documents
Guide to POSIX for Programmers
Programming Guide
Reference Guide and Appendixes
CHAPTER 1. Introduction to POSIX and Portability
Who is Backing POSIX?
The POSIX Family of Standards
The POSIX.1 Standard Document
The Design of POSIX
POSIX and Non-UNIX Operating Systems
POSIX, C, ANSI C, and Standard C
Why Standard C?
Working Outside the Standards
Finding The POSIX Libraries
Converting Existing Programs
CHAPTER 2. Developing POSIX Applications
The POSIX Development Environment
The Standard C Compiler
POSIX and C Libraries
Converting Existing Programs
A Porting Example
An Alternate Approach
Standard Header Files
Template for a POSIX Application
/* Feature test switches */
/* System headers */
/* Local headers */
/* Macros */
/* File scope variables */
/* External variables */
/* External functions */
/* Structures and unions */
/* Signal catching functions */
/* Functions */
/* Main */
Sample Program
Portability Lab
CHAPTER 3. Standard File and Terminal I/O
Libraries and System Calls
Standard Files
Formatted Output
The vfprintf(), vprintf(), and vsprintf() Functions
Character Output Functions
The fputs() and puts() Functions
The fputc(), putc(), and putchar() Functions
Reading Lines ofInput
Additional Pitfall
Other Character Input Functions
The fgetc(), getc() and getchar() Functions
The fgets() Function
The gets() Function
The ungetc() Function
Opening and Closing Files
Direct Input/Output functions
The fwrite() and fread() Functions
File Positioning Functions
The fgetpos() and fsetpos() Functions
The ftell() and fseek() Function
The rewind() Function
Managing Buffers
Sample Program
Portability Lab
CHAPTER 4. Files and Directories
Portable Filenames
Directory Tree
Current Working Directory
Making and Removing Directories
The rmdir() Function
Simulating the mkdir() and rmdir() Functions
Directory Structure
Manipulating Directories
Linking to a File
Removing a File
Renaming a File
File Characteristics
Retrieving a FileUs Characteristics
Changing File Accessibility
Changing the Owner of a File
Setting File Access and Modification Times
Reading Directories
The opendir() Function
The readdir() Function
The closedir() Function
The rewinddir() Function
General Comments
Complete Example
Pitfall: Symbolic Links
Portability Lab
CHAPTER 5. Advanced File Operations
Primitive File Operations
File Descriptors
Opening a file
Reading from a File
Writing to a File
Fast File Copy Example
Control Operations on a File
Setting the File Position
The dup() and dup2() Functions
Closing a File
FIFOs and Pipes
File Creation Mask
The umask() Function
Mixing the Levels
The fdopen() Function
The fileno() Function
Portability Lab
CHAPTER 6. Working with Processes
Process Creation
The fork() Function
The exec() Family of Function
Example: Piping Output Through more
Portability Note
Process Termination
The wait() and waitpid() Functions
Terminating the Current Process
Returning from main()
Calling exit()
Calling _exit()
Calling abort()
Terminating Another Process
Signal Actions
Signal-Catching Functions
Examine and Change Signal Action
Standard C Signals
POSIX Signals
Example: Timing a System Function
Signal Sets
The sigemptyset() Function
The sigfillset() Function
The sigaddset() Function
The sigdelset() Function
Using the sigset Functions
The sigismember() Function
The sigprocmask() Function
The sigpending() Function
Wait for a Signal
Sending a Signal
Portability Lab
CHAPTER 7. Obtaining Information at RunPtime
Process Identification
User Identification
User IDs
Group IDs
System Identification
Date and Time
The time() Function
The localtime() and gmtime() Functions
The mktime() Function
The strftime() Function
The asctime() and ctime() Functions
The difftime() Function
The clock() and times() Functions
Environment Variables
The getenv() Function
The sysconf() Function
The pathconf() and fpathconf() Functions
Portability Lab
CHAPTER 8. Terminal I/O
Terminal Concepts
Setting Terminal Parameters
The tcsetattr() and tcgetattr() Functions
The termios Structure
System V termio and POSIX termios Structures
Example: Reading a Password
Input Processing
Output Processing
Modem Control
Non-Canonical I/O
Input Modes
Output Modes
Control Modes
Local Modes
Control Characters
Speed Storing Functions
Line Control Functions
The tcsendbreak() Function
The tcdrain() Function
The tcflush() Function
The tcflow() Function
Avoiding Pitfalls
Example: Computer-to-Computer Communications
Process Groups and Job Control
Process Groups
Foreground Process
Background Process
Controlling Terminal
Get/Set Process Group
The setsid() Function
The setpgid() Function
The tcsetpgrp() Function
Portability Lab
CHAPTER 9. POSIX and Standard C
Common Usage C
Standard C
Getting Standard C
The Standard C Preprocessor
Translation Phases
Macro Replacement
Conversion of Macro Arguments to Strings
Token Pasting
New Directives
Namespace Issues
Names Reserved by the C Language
Names Reserved by Header Files
C Library Functions
POSIX Library Functions
Avoiding Pitfalls
Function Prototypes
Avoiding Pitfalls
Writing New Programs
Maintaining Old Programs
Mixing Old and New
Using const and volatile
String Constants
Data Type Conversions
Character Sets
Using Floating-point Data
Using Data Structures
Data Segment Layout
Big-endian vs. Little-endian
Portability Lab
CHAPTER 10. Porting to Far-off Lands
Some Definitions
Locale Control
Character and Codeset
Representation of Numbers
Setting the Current Locale
Character-handling Functions
The isalpha(), islower(), and isupper() Functions
The toupper() and tolower() Functions
The isspace() Function
The strcoll() Function
The strxfrm() Function
The strerror() and perror() Functions
The strftime() Function
Native Language Messages
Message Catalogs
The catopen() Function
The catgets() Function
The catclose() Function
Local Numeric Formatting
Asian Languages
Multi-byte Characters
Wide Characters
Working with Multi-byte and Wide Characters
The mbtowc() Function
The mbstowcs() Function
The wctomb() Function
The wcstombs() Function
The mblen() Function
Portability Lab
Library Functions
abort() -- Causes abnormal process termination
abs() -- Computes the absolute value of an integer
access() -- Tests for file accessibility
acos() -- Computes the principal value of arc cosine
alarm() -- Schedules an alarm
asctime() -- Converts a time structure to a string
asin() -- Computes the principal value of the arc sine
assert() -- Aborts the program if assertion is false
atan() -- Computes the principal value of the arc tangent
atan2() -- Computes the principal value of the arc tangent of y/x
atexit() Registers a function to be called at normal program termination 223
atof() -- Converts a text string to double
atoi() -- Converts a text string to integer
atol() -- Converts a text string to long integer
bsearch() -- Searches a sorted array
calloc() -- Allocates and zeroes memory
ceil() -- Computes the smallest integer greater than or equal to x
cfgetispeed() -- Reads terminal input baud rate
cfgetospeed() -- Reads terminal output baud rate
cfsetispeed() -- Sets terminal input baud rate
cfsetospeed() -- Sets terminal output baud rate
chdir() -- Changes the current working directory
chmod() -- Changes file mode
chown() -- Changes the owner and/or group of a file
clearerr() -- Clears end-of-file and error indicators for a stream
clock() -- Determines processor time used
close() -- Closes a file
closedir() -- Ends directory read operation
cos() -- Computes the cosine function
cosh() -- Computes the hyperbolic cosine function
creat() -- Creates a new file or rewrites an existing one
ctermid() -- Generates terminal pathname
ctime() -- Formats a calendar time
cuserid() -- Gets user name
difftime() -- Computes the difference between two times
div() -- Computes the quotient and remainder of an integer division
dup() -- Duplicates an open file descriptor
dup2() -- Duplicates an open file descriptor
execl() -- Executes a file
execle() -- Executes a file
execlp() -- Executes a file
execv() -- Executes a file
execve() -- Executes a file
execvp() -- Executes a file
exit() -- Causes normal program termination
_exit() -- Terminates a process
exp() -- Computes the exponential function
fabs() -- Computes the absolute-value function
fclose() -- Closes an open stream
fcntl() -- Manipulates an open file descriptor
fdopen() -- Opens a stream on a file descriptor
feoff() -- Tests the end-of-file indicator for a stream
ferror() -- Tests the error indicator for a stream
fflush() -- Updates stream
fgetc() -- Reads a character from a stream
fgetpos() -- Gets the current file position
fgets() -- Reads n characters from a stream
fileno() -- Maps a stream pointer to a file descriptor
floor() -- Computes the largest integer not greater than x
fmod() -- Computes the remainder of x/y
fopen() -- Opens a stream
fork() -- Creates a process
fpathconf() -- Gets configuration variable for an open file
fprintf() -- Writes formatted text to a stream
fputc() -- Writes a character to a stream
fputs() -- Writes a string to a stream
fread() -- Reads an array from a stream
free() -- Deallocates dynamic memory
freopen() -- Closes and then opens a stream
frexp() -- Breaks a floating-point number into a fraction and integer ... 298
fscanf() -- Reads formatted input from a stream
fseek() -- Sets file position
fsetpos() -- Sets the file position for a stream
fstat() -- Gets file status
ftell() -- Gets the position indicator for a stream
fwrite() -- Writes an array to a stream
getc() -- Reads a character from a stream
getchar() -- Reads a character from standard input
getcwd() -- Gets current working directory
getegid() -- Gets effective group ID
getenv() -- Gets the environment variable
geteuid() -- Gets effective user ID
getgid() -- Gets real group ID
getgrgid() -- Reads groups database based on group ID
getgrnam() -- Reads group database based on group name
getgroups() -- Gets supplementary group IDs
getlogin() -- Gets user name
getpgrp() -- Gets process group ID
getpid() -- Gets process ID
getppid() -- Gets parent process ID
getpwnam() -- Reads user database based on user name
getpwuid() -- Reads user database based on user ID
gets() -- Reads a string from standard input
getuid() -- Gets real user ID
gmtime() -- Breaks down a timer value into a time structure in
Coordinated Universal Time (UTC)
isalnum() -- Tests for alphabetic or numeric character
isalpha() -- Tests for alphabetic character
isatty() -- Determines if a file descriptor is associated with a terminal 330
iscntrl() -- Tests for control character
isdigit() -- Tests for decimal-digit character
isgraph() -- Tests for printing character
islower() -- Tests for lowercase character
isprint() -- Tests for printing character
ispunct() -- Tests for punctuation
isspace() -- Tests for white-space character
isupper() -- Tests for uppercase alphabetic character
isxdigit() -- Tests for hexadecimal-digit character
kill() -- Sends a signal to a process
labs() -- Computes the absolute value of a long integer
ldexp() -- Multiplies a floating-point number by a power of 2
ldiv() -- Computes the quotient and remainder of integer division
link() -- Creates a link to a file
localeconv() -- Gets rules to format numeric quantities for the
current locale
localtime() -- Breaks down a timer value into a time structure in
local time
log() -- Computes the natural log function
log10() -- Computes the base-ten logarithm function
longjmp() -- Restores the calling environment
lseek() -- Repositions read/write file offset
malloc() -- Allocates dynamic memory
mblen() -- Determines the number of bytes in a character
mbstowcs() -- Converts a multibyte string to a wide-character string .... 354
mbtowc() -- Converts a multibyte character to a wide character
memchr() -- Scans memory for a byte
memcmp() -- Compares two memory objects
memcpy() -- Copies non-overlapping memory objects
memmove() -- Copies (possibly overlapping) memory objects
memset() -- Fills memory with a constant byte
mkdir() -- Makes a directory
mkfifo() -- Makes a FIFO special file
mktime() -- Converts time formats
modf() -- Breaks a value into integral and fractional parts
open() -- Opens a file
opendir() -- Opens a directory
pathconf() -- Gets configuration variables for a path
pause() -- Suspends process execution
perror() -- Prints an error message
pipe() -- Creates an interprocess channel
pow() -- Computes x raised to the power y
printf() -- Writes formatted text to the standard output stream
putc() -- Writes a character to a stream
putchar() -- Writes a character to standard output
puts() -- Writes a string to standard output
qsort() -- Sorts an array
raise() -- Sends a signal
rand() -- Returns a random number
read() -- Reads from a file
readdir() -- Reads a directory
realloc() -- Changes the size of a memory object
remove() -- Removes a file from a directory
rename() -- Renames a file
rewind() -- Sets the file position to the beginning of the file
rewinddir() -- Resets the readdir() pointer
rmdir() -- Removes a directory
scanf() -- Reads formatted text from standard input stream
setbuf() -- Determines how a stream will be buffered
setgid() -- Sets group ID
setjmp() -- Saves the calling environment for use by longjmp()
setlocale() -- Sets or queries a programUs locale
setpgid() -- Sets process group ID for job control
setsid() -- Creates a session and sets the process group ID
setuid() -- Sets the user ID
setvbuf() -- Determines buffering for a stream
sigaction() -- Examines and changes signal action
sigaddset() -- Adds a signal to a signal set
sigdelset() -- Removes a signal from a signal set
sigemptyset() -- Creates an empty signal set
sigfillset() -- Creates a full set of signals
sigismember() -- Tests a signal set for a selected member
siglongjmp() -- Goes to and restores signal mask
signal() -- Specifies signal handling
sigpending() -- Examines pending signals
sigprocmask() -- Examines and changes blocked signals
sigsetjmp() -- Saves state for siglongjmp()
sigsuspend() -- Waits for a signal
sin() -- Computes the sine function
sinh() -- Computes the hyperbolic sine of x
sleep() -- Delays process execution
sprintf() -- Formats a string
sqrt() -- Computes the square root function
srand() -- Sets a seed for the rand() function
sscanf() -- Parses a string
stat() -- Gets information about a file
strcat() -- Concatenates two strings
strchr() -- Scans a string for a character
strcmp() -- Compares two strings
strcoll() -- Compares two strings using the current locale
strcpy() -- Copies a string
strcspn() -- Searches a string for characters which are not in the
second string
strerror() -- Converts an error number to a string
strftime() -- Formats date/time
strlen() -- Computes the length of a string
strncat() -- Concatenates two counted strings
strncmp() -- Compares two counted strings
strncpy() -- Copies a counted string
strpbrk() -- Searches a string for any of a set of characters
strrchr() -- Locates the last occurrence of a character in a string
strspn() -- Searches a string for any of a set of characters
strstr() -- Locates a substring
strtod() -- Converts a string to double
strtok() -- Breaks a string into tokens
strtol() -- Converts a string to long int
strtoul() -- Converts a string to unsigned long int
strxfrm() -- Transforms strings using rules for locale
sysconf() -- Gets system configuration information
system() -- Executes a command
tan() -- Computes the tangent of x
tanh() -- Computes the hyperbolic tangent of x
tcdrain() -- Waits for all output to be transmitted to the terminal
tcflow() -- Suspends/restarts terminal output
tcflush() -- Discards terminal data
tcgetattr() -- Gets terminal attributes
tcgetpgrp() -- Gets foreground process group ID
tcsendbreak() -- Sends a break to a terminal
tcsetattr() -- Sets terminal attributes
tcsetpgrp() -- Sets foreground process group ID
time() -- Determines the current calendar time
times() -- Gets process times
tmpfile() -- Creates a temporary file
tmpnam() -- Generates a string that is a valid non-existing file name ... 487
tolower() -- Converts uppercase to lowercase
toupper() -- Converts lowercase to uppercase
ttyname() -- Determines a terminal pathname
tzset() -- Sets the timezone from environment variables
umask() -- Sets a file creation mask
uname() -- Gets system name
ungetc() -- Pushes a character back onto a stream
unlink() -- Removes a directory entry
utime() -- Sets file access and modification times
va_arg() -- Gets the next argument
va_end() -- Ends variable argument list
va_start() -- Starts a variable argument list
vfprintf() -- Writes formatted text with a variable argument list
vprintf() -- Write formatted text to standard output with a variable
argument list
vsprintf() -- Write formatted text to a string with a variable
argument list
wait() -- Waits for process termination
waitpid() -- Waits for process termination
wcstombs() -- Converts a wide character string to a multibyte
character string
wctomb() -- Converts a wide character to a multibyte character
write() -- Writes to a file
APPENDIX A. Header Files
Description of Tables
APPENDIX B. Data Structures
APPENDIX C. Error Codes
APPENDIX D. Porting from BSD and System V
BSD Functions
System V Functions
APPENDIX E. Changes and Additions in Standard C
Character Set
Structures, Unions, and Arrays
switch Statements
APPENDIX F. Federal Information Processing Standard 151-1
APPENDIX G. Answers to Selected Exercises
Related Publications
The Standards
Other Documents of Interest

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing 1 Customer Reviews
  • Anonymous

    Posted December 5, 2000

    POSIX.1 Library

    It is not enough to use reference book for POSIX.1 Library. I think that it just include short description and example.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing 1 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)