Errata

Linux System Programming

Errata for Linux System Programming, Second Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed Page 5
APIs subsection, first paragraph, third line

There's an extra mdash between interfaces and usually: "... a standard set of interfaces--- ---usually functions--- that one piece of software ..."

Andrew R Dalton  Dec 28, 2016 
Printed Page 8
C Language Standards section, 3rd paragraph, 2nd line

The text reads "...release---the first C standard, ISO C98, was ratified in 1998", and the font for "standard, ISO C98," is fixed width. This section is on C++ standards, so I think that it should read: "...release ---the first C++ standard, ISO C++98, was ratified in 1998." To be consistent with the others ISO references, I think "ISO C++98" should be in italics, not fixed width.

Andrew R Dalton  Dec 28, 2016 
Printed Page 59
3rd paragraph

POLLER should be POLLERR

Fabrizio Soppelsa  Feb 18, 2015 
Printed Page 82
'Obtaining the Current Stream Position' section, second example

The in code sample that includes the signature for fgetpos(), the include reads "stdioh.h" instead of "stdio.h".

Andrew R Dalton  Dec 29, 2016 
Printed Page 82
Flushing a Stream, 2nd paragraph

The text describing fflush() reads "If stream is NULL, all open input streams in the process are flushed." Here, "input" should be "output" -- all open output streams are flushed.

Andrew R. Dalton  Jan 04, 2017 
Printed Page 129
Optimizing I/O Performance, first sentence

The text reads "665.180bBecause disk I/O..."; strike 665.180b.

Andrew R Dalton  Dec 30, 2016 
Printed Page 138
Chapter 5

Under "The Process ID"

What's 733.510bEach?

Julio IsaĆ­as  Nov 13, 2015 
Printed Page 138
"The Process ID" section

In the previous section (Programs, Processes, and Threads) the author differentiates between a program (a binary on disk) and a process (a running programming). Throughout this section, however, he refers to init binaries on disk as processes. I suggest changing "process" to "program".

"...the kernel has to identify a suitable init program on its own..."

In the enumerated list, all four should says "init program" instead of "init process".

"The first of these programs that exists is executed as the init process. If all four programs fail to execute, the Linux kernel halts the system with a panic."

Andrew R Dalton  Dec 30, 2016 
Printed Page 156
Event More Waiting Versatility, first sentence

The text reads "753.400bFor applications..."; strike 753.400b.

Andrew R Dalton  Jan 01, 2017 
Printed Page 259
Directories, first sentence

The text reads "528.80bIn Unix, a..."; strike 528.80b.

Andrew R Dalton  Jan 02, 2017 
PDF Page 303
3

The statement:

"(..)a type that is 2n bytes in size must have an address with the n least-significant bits set to 0."--> is incorrect.

Actually the number of zeroed least significant bits is equal to n, but in the case of data type 2^n bytes, not 2n bytes.

Karolina Riddle  Sep 28, 2023 
Printed Page 320
First paragraph, last sentence, last word

The text reads "...would make more f158.60sense."; strike f158.60.

Andrew R Dalton  Jan 02, 2017 
Printed Page 325
Frobnicating Bytes, first paragraph after the prototype

The text reads "...(XORing) each byte with the numberf164.430 42"; strike f164.430.

Andrew R Dalton  Jan 02, 2017 
Printed Page 353
Advanced Signal Management, first sentence

The text reads "691.170bThe signal() function that we studied..."; strike 691.170b.

Andrew R Dalton  Jan 02, 2017 
PDF Page 367
Near the bottom, under "tm_sec"

tm_sec is described as "The number of seconds after the minute. This value normally ranges from 0 to 59, but it can be as high as 61 to indicate up to two leap seconds."

In fact, it can only be as high as 60. The 61 was an error in the 1989/1990 ANSI/ISO C standard, which assumed incorrectly that it was possible to have two leap seconds in a single minute. It was corrected in the 1999 and 2011 editions. (Leap seconds so far have been at least 6 months apart.)

Keith Thompson  Mar 14, 2017 
Printed Page 383
Paragraph above "An Advanced Approach to Sleep", second line

The second sentence in the paragraph reads "Because +nanosleep() is a POSIX...". The word "Because" is in the fixed-width font when it ought not be, and there ought not be a "+" before "nanosleep()".

Andrew R Dalton  Jan 03, 2017 
PDF Page 401
3rd Paragraph

Change
"The programmer must select a variable that is not function-clobbered: that is, the selected variable must..."
==>
"The programmer must select a register that is not function-clobbered: that is, the selected register must..."

Anonymous  Nov 04, 2019