以下是APUE 3rd edition 的preface,从04年的第二版到现在的第三版,APUE内容有所更新。点击下载

It’s been almost eight years since I first updated Advanced  Programming  in  the  UNIX

Environment, and already so much has changed.

• Before the second edition was published, The Open Group created a 2004 edition of the Single UNIX Specification, folding in the changes from two sets of corrigenda. In 2008, The Open Group created a new version of the Single UNIX Specification,  updating  the  base  definitions,  adding  new  interfaces,  and removing  obsolete  ones.  This  was  called  the  2008  version  of  POSIX.1, which included version 7 of the Base Specification and was published in 2009. In 2010, this was bundled with an updated curses interface and reissued as version 4 of

the Single UNIX Specification.

• Versions 10.5, 10.6, and 10.8 of the Mac OS X operating system, running on Intel processors, have been certified to be UNIX® systems by The Open Group.

• Apple  Computer  discontinued  development  of  Mac  OS  X  for  the  PowerPC platform.  From  Release  10.6  (Snow  Leopard)  onward,  new  operating  system

versions are released for the x86 platform only.

• The Solaris operating system was released in open source form to try to compete with the popularity of the open source model followed by FreeBSD, Linux, and Mac  OS  X. After  Oracle  Corporation  bought  Sun  Microsystems  in  2010,  it discontinued the development of OpenSolaris. Instead, the Solaris community formed  the  Illumos  project  to  continue  open  source  development  based  on OpenSolaris.  For more information, see http://www.illumos.org.

• In 2011, the C standard was updated, but because systems haven’t caught up yet with the changes, we still refer to the 1999 version in this text. Most notably, the platforms used in the second edition have become out-of-date. In this book, the third edition, I cover the following platforms:

1.  FreeBSD  8.0,  a  descendant  of  the  4.4BSD  release  from  the  Computer  Systems Research Group at the University of California at Berkeley, running on a 32-bit Intel Pentium processor.

2.  Linux 3.2.0 (the Ubuntu 12.04 distribution), a free UNIX-like operating system, running on a 64-bit Intel Core i5 processor.

3.  Apple Mac  OS  X,  version  10.6.8 (Darwin  10.8.0) on  a  64-bit  Intel  Core 2 Duo

processor. (Darwin  is  based  on  FreeBSD  and  Mach.) I chose  to  switch  to  an

Intel platform instead of continuing with one based on the PowerPC, because

the  latest  versions  of  Mac  OS  X  are no longer  being  ported  to  the  PowerPC

platform.  The drawback to this choice is that the processors covered are now slanted in favor of Intel. When discussing issues of heterogeneity, it is helpful to have processors with different characteristics, such as byte ordering and integer size.

4.  Solaris 10,  a  derivative  of  System  V  Release  4  from  Sun  Microsystems  (nowOracle), running on a 64-bit UltraSPARC IIi processor.

Changes from the Second Edition

One  of  the  biggest  changes  to  the  Single  UNIX  Specification  in  POSIX.1-2008  is the demotion of the STREAMS-related interfaces to obsolescent status. This is the first step

before these interfaces are removed entirely in a future version of the standard.  Because of this, I have reluctantly removed the STREAMS content from this edition of the book. This is an unfortunate change, because the STREAMS interfaces provided a nice contrast to the socket interfaces, and in many ways were more flexible.  Admittedly, I am not entirely unbiased when it comes to the STREAMS mechanism, but there is no debating the reduced role it is playing in current systems:

• Linux doesn’t include STREAMS in its base system, although packages (LiS and OpenSS7) are available to add this functionality.

• Although Solaris 10 includes STREAMS, Solaris 11 uses a socket implementation that is not built on top of STREAMS.

• Mac OS X doesn’t include support for STREAMS.

• FreeBSD doesn’t include support for STREAMS (and never did).

So with the removal of the STREAMS-related material, an opportunity exists to replace it with new topics, such as POSIX asynchronous I/O. In the second edition, the Linux version covered was based on the 2.4 version of the source.  In this edition, I have updated the version of Linux to 3.2. One of the largestarea of differences between these two versions is the threads subsystem. Between Linux 2.4 and Linux 2.6, the threads implementation was changed to the Native POSIX Thread Library (NPTL). NPTL makes threads on Linux behave more like threads on the other systems.

In total, this edition includes more than 70 new interfaces, including interfaces to handle asynchronous I/O, spin locks, barriers, and POSIX semaphores.  Most obsolete interfaces are removed, except for a few ubiquitous ones.

仔细看了一下目录,APUE 3rd 的API很丰富,但是也不是很全面,对于网络编程的接口和信号的接口,还有2.6以来的一些新接口的覆盖还是不全,推荐有时间结合:

The Linux Programming Interface

豆瓣地址:http://book.douban.com/subject/4292217/

下载地址:http://ishare.iask.sina.com.cn/f/14632131.html

一起看,或者作为APUE的替代都是可以的。

APUE 3rd的更多相关文章

  1. Unix系统中system函数的返回值

    网上关于system函数的返回值说明很多很详细但却不直观,这里搬出apue 3rd Editon中实现system函数的代码来说明其返回值. #include <sys/wait.h> # ...

  2. [APUE]进程控制(上)

    一.进程标识 进程ID 0是调度进程,常常被称为交换进程(swapper).该进程并不执行任何磁盘上的程序--它是内核的一部分,因此也被称为系统进程.进程ID 1是init进程,在自举(bootstr ...

  3. [APUE]UNIX进程的环境(下)

    一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函 ...

  4. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  5. APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试

    此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...

  6. APUE fig 1.10示例代码的完善--对提示符及输入回车的优化

    APUE 第3版第15页的shell2.c示例程序,运行效果如下: gcc ol.shell.c -o origin_shell ./origin_shell % date 2015年12月13日 星 ...

  7. 关于apue.3e中apue.h的使用

    关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...

  8. APUE学习之多线程编程(三):线程属性、同步属性

    一.线程属性      可以使用pthread_attr_t结构修改线程默认属性,并这些属性和创建的线程练习起来,可以使用pthread_att_init函数初始化pthread_attr_t结构,调 ...

  9. APUE学习之多线程编程(二):线程同步

         为了保证临界资源的安全性和可靠性,线程不得不使用锁,同一时间只允许一个或几个线程访问变量.常用的锁有互斥量,读写锁,条件变量           一.互斥量      互斥量是用pthrea ...

随机推荐

  1. 初识序列化和反序列化,使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化

    序列化是将对象转换成字节流的过程,反序列化是把字节流转换成对象的过程.对象一旦被序列化,就可以把对象状态保存到硬盘的某个位置,甚至还可以通过网络发送给另外一台机器上运行的进程.本篇主要包括: ● 使用 ...

  2. maven生命周期理解

    你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点.当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期. 知道了每套生命周期的大概用途和相互关系 ...

  3. itunes connect 沙盒帐号地区的问题导致无法进行充值

    项目代理给台湾发行,版本由项目提交appstore,台湾合作伙伴会进行测试.这里遇到一个问题,就是沙盒帐号测试的时候死活提示充值失败,不走正常的充值流程. 后来我分析了原因,主要是由于帐号的App S ...

  4. 【转】Itunes Connect新版本如何提交应用

    本文系转载,版权归原作者所有(原文链接>>). How do I submit my app to iTunes connect? To submit your app to iTunes ...

  5. ArrayAdapter使用方法

    ArrayAdapter是一个简单的适配器,他的作用是将一个数组中的内容放入listView中.listView的item必须为textView. MainActivity.java package ...

  6. Python 网络请求模块 urllib 、requests

    Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是 urllib.requests这两个模块. urlib 介绍 urllib.request 提供了一个 urlopen 函 ...

  7. 如何看一段JAVA代码耗了多少内存

    简单的方法,如下: Runtime r = Runtime.getRuntime();  r.gc();  long startMem = r.freememory(); // 开始时的剩余内存  你 ...

  8. LCA算法总结

    LCA问题(Least Common Ancestors,最近公共祖先问题),是指给定一棵有根树T,给出若干个查询LCA(u, v)(通常查询数量较大),每次求树T中两个顶点u和v的最近公共祖先,即找 ...

  9. iOS:在tableView中通过Masonry使用autolayout在iOS7系统出现约束崩溃

    一.出现崩溃情景: 给tableView创建一个头视图,也即tableHeaderView,然后使用Masonry并切换到iOS7/7.1系统给tableHeaderView中的所有子视图添加约束,此 ...

  10. JEECG 命名规范

    举例讲解代码规范 例如:表名 :jeecg_sys_demo 第一部分:代码文件命名规则如下: 首先:表名采用驼峰写法转换为Java代码使用单词  jeecg_sys_demo => Jeecg ...