自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

clariones的专栏

算法.优化.学习资料

  • 博客(17)
  • 资源 (22)
  • 问答 (1)
  • 收藏
  • 关注

翻译 安卓 用户界面 Preference 教程翻译

Android官方‘配置项’界面的教程翻译。网上找了一圈没找到中文的,就自己把看的过程中的翻译都写下来了。

2016-05-24 11:22:07 2125

原创 使用JSCH连接时,需要输入密码的解决方法

背景:在做一个安装脚本,期间会执行一些数据库的操作,需要DBA帐号才可以执行。我们用的JSCH创建SSH通道,直接连接到目标机器上执行,效果和打开命令行是一样的,唯一特殊的,就是关于DBA的密码的问题。Oracle(我们的数据库用的Oracle)的脚本中是提供了连同密码一起输入的功能的,但是!凡事就怕但是!客户提出的要求是:对帐号密码的明文存储零容忍!Ok,说白了,不能在配置文件里

2012-12-31 15:37:36 6660 1

原创 如何在linux上安装git

工作需要,要装git,结果找不到源,后来搞定,记录如下1. Linux EL5 x86_64    1.1 我的这个版本上有yum,所以用yum来装git, 但是第一次装找不到源,最后显示 “nothing to do”    1.2 然后上网搜,说是要先装EPEL    1.3 如何安装EPEL? 网上给出很多链接,但是可能会随着时间而失效,所以最后,我是直接到EPEL官

2012-06-15 12:46:56 3900

原创 java.io.IOException: Invalid argument

在写一段代码,涉及到UDP广播,本来一切正常,后来因为产品需要,改成按照网卡名称来绑定地址。于是一场修改啊,终于碰到这个奇怪的异常 java.io.IOException: Invalid argument堆栈信息没啥好看的,这个错误源自native方法。于是一场查找啊,终于发现原因:因为我在查找网卡时,该网卡同时有IPv6和IPv4的地址,我绑定到IPV6的地址上了,于是再发

2011-08-12 17:11:56 5807 1

原创 水仙花数的改进算法

水仙花数

2010-10-11 11:47:00 5797 3

原创 如何在Eclipse里为Navigator加Filter

如何在Eclipse里为Navigator加Filter

2010-08-18 16:01:00 4081 14

原创 从Jboss4.0.2迁移到Jboss5.1.0

最近干了一件吃力的事情, 把以前的EJB2.x应用从Jboss4迁移到Jboss5. 刚开始, 流年不利啊, 部署到Jboss5上后奇奇怪怪的问题不断, 就查Jboss的文档, 从WWW.Jboss.org找了一份Jboss5的"administrator and configuration guide", 打开一看, 书中写到"The primary focus of this book

2010-03-18 14:32:00 1526 2

原创 WEB页面中嵌套的滚动窗口

最近在写一些WEB页面,遇到一个问题:需要在页面上展示大量的数据记录出于某些原因,我的客户要求必须将所有数据加载到页面中,然后进行一些常见的过滤、排序等操作。在同事的帮助下,我们确定了一个“虚拟窗口”的方案,就是设计一个滚动窗口,但是内容空白,只有窗口height是根据实际数据条目设置,然后在它的scroll事件中,计算需要显示哪部分数据,再单独用一个DIV来显示这部分数据。实施过程中

2009-07-11 14:37:00 1860

原创 使用JavaScript对页面文字折行

最近在做Web 页面,虽然不是很喜欢,不过既然公司安排了,就好好做吧,还是学了不少东西。碰到一个问题,就是在页面展示的时候,很多情况下需要对显示的文字做折行处理,例如文字超过TD的宽度,或者DIV的宽度等等。在IE下有word-break等等,但是在FF下,却是行不通,所以研究了一下,写了一个JS脚本,原理是这样的:1. 首先,我们在页面上找一个span元素,用它来装载字符,然后通

2009-06-15 15:01:00 2369 2

原创 工作感言-1-构建完整的解决方案

写在前面:    最近金融危机--》经济危机了,接到的项目明显减少。感谢这样给了我一个思考的机会。    想把最近几年的工作感言整理一下,为以后的工作做些准备。  序言:    今天写的是:构建完整的解决方案。 原因是在过去的几年中,经常面临“需求变化”的问题。努力寻找了很多年的解决方案,现在想来,或许问题还是出在我们自己身上,因为我们当初的基础不对。一句“客户并不真的

2009-01-09 10:11:00 895

原创 买房还是租房:程序员的判断办法

买房还是租房,作为一个程序员,做出的回答很简单:先计算,再决定。 俺在这里有一个电子表格文件http://download.csdn.net/source/738706,填好参数以后,按“开始计算”就可以得到你贷款还清的那一年,你做“买房”和“租房”两种选择的总财产金额。 改过几个参数,发现“贷款额”其实不是主要的影响因素,是什么? 是租售比。如果租售比是200,你会发现,

2008-10-31 17:54:00 852

转载 房价的真相--转载自"焦点房地产"的一位过客评论

和房价无关,看看这位写文章的逻辑,值得程序员学习房价的真相 一炒家去年购一处100平米的商品房,开盘价5000元/平米,房屋总价50万元。贷款8成,首付10万。几个月后,他们将房价炒到了8000元/平米。担心没人买吗?他们根本没打算卖!——他们将房子卖给自己!(当然是以另一个人的名义)。这时房子总价是80万,贷款8成(64万),首付16万,通过转按揭(或提前还贷方式),他将房子 卖

2008-09-09 14:42:00 1643

原创 一些奇怪的问题

在这里收集了一些工作中碰到的奇奇怪怪的问题及解决办法,都是些小细节,曾经有过很多了,不过现在才开始做记录,亡羊补牢吧。在Solaris中编译,老是报"inet_aton unresolved"  找到问题所在,google到的,如下:> Hang on, inet_aton *is* in Solaris but not mentioned on the I

2008-01-23 18:14:00 952

原创 RMI概要介绍

今天看完了RMI,然后动手写了一个例子.简单说,实现RMI还是挺麻烦的.需要一个服务器,一个客户端.服务器上至少需要写两份代码,一份是注册服务,一份是实现服务,        举个例子:        我想从一台机器访问服务器,执行一个查询火车时刻的操作,那么,这个服务就是"查询火车时刻".        注册服务,就是完成向服务器声明"我有查询火车时刻的功能"这一步;         实现服

2007-08-14 10:28:00 766

原创 VNC 的问题

 使用VNC的资料很多, 不过我遇到一个奇怪的问题:1. 使用putty, 或者 telnet, 什么都好, 连接到服务器上(Solaris 10);2. 使用 vncserver 命令启动一个vnc服务;3. 使用vncviewer登陆, 一切正常;4. 退出原来启动 vncserver的shell, 结果vncviewer中立即变成灰色, 什么都没有了感觉像是随着shell

2007-05-15 17:32:00 1056

原创 文本比较算法剖析(2)-如何确定最优匹配路径

上回说到,如何确定最大匹配数。接下来,本次将简述如何确定最优匹配路径。仿照确定最大匹配数的算法,这个问题也非常容易解决,不知道这周当中,有没有哪位XDJM已经有了自己的解决方案呢?有问题可以发邮件给我:Calriones@hotmail.com文本比较算法剖析(2)-如何确定最优匹配路径确定最优匹配路径的问题,通常在做文件比较时要用到,它的意思是:在所有能够得到最大匹配点数的路径中,找

2006-11-24 14:11:00 8510 8

原创 文本比较算法剖析(1)-如何确定最大匹配率

最近看到有人在找关于文本比较的算法,刚好最近休假,研究了一下,终于找到一个简单有效的算法,和大家分享一下。算法本身很简单,但是要说清楚思路和原理就比较复杂了,打算分两次发表(明天就要上班拉!),分别对应文本比较算法中的两个主要问题:1。如何确定最大匹配率; 2。如何确定最优的匹配路径;算法本身是基于图论的,太麻烦了,所以不打算介绍整个思路,只将最后的结果详细解说给大家。有问题可以发

2006-11-19 23:07:00 15346 11

JSCH执行命令是输入密码的方法

http://blog.csdn.net/clariones/article/details/8455345

2012-12-31

JSCH处理输入pssword的源代码

请参考http://blog.csdn.net/clariones/article/details/8455345 是解决用JSCH连接远程,执行命令时,又需要输入密码的问题。 例如用JSCH执行“su - root"是需要输入的密码。

2012-12-31

清华紫光帝王笔驱动

老爸用的手写板驱动 在这里做个备份 貌似已经停产了 找都找不到

2011-09-27

CM 6.1 stable ROM for HTC Slide(3/3)

only for HTC mytouch 3G slide

2010-12-10

CM 6.1 stable ROM for HTC Slide (2/3)

下载所有3个文件,解压 *.zip.001

2010-12-10

CM 6.1 stable ROM for HTC Slide

HTC Slide ROM 的 CM6.1 stable 版本 国内太难下了,连接很多次才下来,分享给大家。 zip.001, zip.002这种格式的解压缩方法: 全部下载到一起,然后用winzip解压 zip.001. (本次一共有3个文件)

2010-12-10

WEB页面中嵌套的滚动窗口实例页面

“WEB页面中嵌套的滚动窗口”中的演示文件。

2009-07-11

Flash入门教程(3 of 3)

Flash入门教程(3 of 3) 吕聪贤的Flash入门教程。讲解的Flash开发的基本概念,不是一上来就将细节的那种。SWF文件,共18节。

2009-02-04

Flash入门教程(2 of 3)

Flash入门教程(2 of 3) 吕聪贤的Flash入门教程。讲解的Flash开发的基本概念,不是一上来就将细节的那种。SWF文件,共18节。

2009-02-04

Flash入门教程(1 of 3)

Flash入门教程(1 of 3) 吕聪贤的Flash入门教程。讲解的Flash开发的基本概念,不是一上来就将细节的那种。SWF文件,共18节.

2009-02-04

re sume back up

自个儿的简历,在这里做个备份。自个儿的简历,在这里做个备份。

2008-11-17

买房还是租房:程序员的判断办法

买房还是租房,身为程序员,俺做了最正式的回答: “通过计算,房屋租售比<200就买,否则就租” 下载的电子表格中,灰色单元是你可以设定的一系列参数,旁边都有说明。填好以后,按“开始计算”按钮,会得到若干年(看你打算贷款多少了)后你的买房和租房两种选择的总财产金额。 是宏计算的,所以要记得Enable Macro哦!

2008-10-31

关于后缀001,002的文件

因为CSDN上传附件有大小限制,好像是5M,所以我上传的资源如果超过5M,都会用RAR分卷打包,所以会看到后缀为001,002...的文件。将所有文件下载到一起后,用RAR解压任何一个包,RAR都会自动顺序查找其它分卷,然后完整解压。所以请下载是将相同标题的若干资源全部下载再解压。每个资源只收1~2点,其余分卷都是免费的,不会因为分卷多而多收点数。(原来以为这个都知道,没想到还是需要说明。)

2008-01-16

gcc 3.4.6 rpm 包 (3)

因为CSDN上传附件有大小限制,好像是5M,所以我上传的资源如果超过5M,都会用RAR分卷打包,所以会看到后缀为001,002...的文件。将所有文件下载到一起后,用RAR解压任何一个包,RAR都会自动顺序查找其它分卷,然后完整解压。 所以请下载是将相同标题的若干资源全部下载再解压。每个资源只收1~2点,其余分卷都是免费的,不会因为分卷多而多收点数。 (原来以为这个都知道,没想到还是需要说明。) 在网上找gcc的rpm包,找了好久也找不到。 最后找的安装光盘,把相关的几个rpm包共享给大家. cpp-3.4.6-3.i386.rpm gcc-3.4.6-3.i386.rpm glibc-2.3.4-2.25.i386.rpm glibc-devel-2.3.4-2.25.i386.rpm glibc-headers-2.3.4-2.25.i386.rpm glibc-kernheaders-2.4-9.1.98.EL.i386.rpm

2007-12-06

gcc 3.4.6 rpm 包 (2)

在网上找gcc的rpm包,找了好久也找不到。 最后找的安装光盘,把相关的几个rpm包共享给大家.<br>cpp-3.4.6-3.i386.rpm<br>gcc-3.4.6-3.i386.rpm<br>glibc-2.3.4-2.25.i386.rpm<br>glibc-devel-2.3.4-2.25.i386.rpm<br>glibc-headers-2.3.4-2.25.i386.rpm<br>glibc-kernheaders-2.4-9.1.98.EL.i386.rpm

2007-12-06

gcc 3.4.6 rpm 包 (1)

在网上找gcc的rpm包,找了好久也找不到。 最后找的安装光盘,把相关的几个rpm包共享给大家. cpp-3.4.6-3.i386.rpm gcc-3.4.6-3.i386.rpm glibc-2.3.4-2.25.i386.rpm glibc-devel-2.3.4-2.25.i386.rpm glibc-headers-2.3.4-2.25.i386.rpm glibc-kernheaders-2.4-9.1.98.EL.i386.rpm

2007-12-06

UNIX 环境高级编程 part5

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。 <br><br>目 录<br>译者序<br>译者简介<br>前言<br>第1章 UNIX基础知识 1<br>1.1 引言 1<br>1.2 登录 1<br>1.2.1 登录名 1<br>1.2.2 shell 1<br>1.3 文件和目录 2<br>1.3.1 文件系统 2<br>1.3.2 文件名 2<br>1.3.3 路径名 2<br>1.3.4 工作目录 4<br>1.3.5 起始目录 4<br>1.4 输入和输出 5<br>1.4.1 文件描述符 5<br>1.4.2 标准输入、标准输出和标准<br> 出错 5<br>1.4.3 不用缓存的I/O 5<br>1.4.4 标准I/O 6<br>1.5 程序和进程 7<br>1.5.1 程序 7<br>1.5.2 进程和进程ID 7<br>1.5.3 进程控制 7<br>1.6 ANSI C 9<br>1.6.1 函数原型 9<br>1.6.2 类属指针 9<br>1.6.3 原始系统数据类型 10<br>1.7 出错处理 10<br>1.8 用户标识 11<br>1.8.1 用户ID 11<br>1.8.2 组ID 12<br>1.8.3 添加组ID 12<br>1.9 信号 12<br>1.10 UNIX时间值 14<br>1.11 系统调用和库函数 14<br>1.12 小结 16<br>习题 16<br>第2章 UNIX标准化及实现 17<br>2.1 引言 17<br>2.2 UNIX标准化 17<br>2.2.1 ANSI C 17<br>2.2.2 IEEE POSIX 18<br>2.2.3 X/Open XPG3 19<br>2.2.4 FIPS 19<br>2.3 UNIX实现 19<br>2.3.1 SVR4 20<br>2.3.2 4.3+BSD 20<br>2.4 标准和实现的关系 21<br>2.5 限制 21<br>2.5.1 ANSI C限制 22<br>2.5.2 POSIX限制 22<br>2.5.3 XPG3限制 24<br>2.5.4 sysconf、pathconf 和fpathconf<br>函数 24<br>2.5.5 FIPS 151-1要求 28<br>2.5.6 限制总结 28<br>2.5.7 未确定的运行时间限制 29<br>2.6 功能测试宏 32<br>2.7 基本系统数据类型 32<br>2.8 标准之间的冲突 33<br>2.9 小结 34<br>习题 34<br>第3章 文件I/O 35<br>3.1 引言 35<br>3.2 文件描述符 35<br>3.3 open函数 35<br>3.4 creat函数 37<br>3.5 close函数 37<br>3.6 lseek函数 38<br>3.7 read函数 40<br>3.8 write函数 41<br>3.9 I/O的效率 41<br>3.10 文件共享 42<br>3.11 原子操作 45<br>3.11.1 添加至一个文件 45<br>3.11.2 创建一个文件 45<br>3.12 dup和dup2函数 46<br>3.13 fcntl函数 47<br>3.14 ioctl函数 50<br>3.15 /dev/fd 51<br>3.16 小结 52<br>习题 52<br>第4章 文件和目录 54<br>4.1 引言 54<br>4.2 stat, fstat和lstat函数 54<br>4.3 文件类型 55<br>4.4 设置-用户-ID和设置-组-ID 57<br>4.5 文件存取许可权 58<br>4.6 新文件和目录的所有权 60<br>4.7 access函数 60<br>4.8 umask函数 62<br>4.9 chmod和fchmod函数 63<br>4.10 粘住位 65<br>4.11 chown, fchown和 lchown函数 66<br>4.12 文件长度 67<br>4.13 文件截短 68<br>4.14 文件系统 69<br>4.15 link, unlink, remove和rename <br> 函数 71<br>4.16 符号连接 73<br>4.17 symlink 和readlink函数 76<br>4.18 文件的时间 76<br>4.19 utime函数 78<br>4.20 mkdir和rmdir函数 79<br>4.21 读目录 80<br>4.22 chdir, fchdir和getcwd函数 84<br>4.23 特殊设备文件 86<br>4.24 sync和fsync函数 87<br>4.25 文件存取许可权位小结 88<br>4.26 小结 89<br>习题 89<br>第5章 标准I/O库 91<br>5.1 引言 91<br>5.2 流和FILE对象 91<br>5.3 标准输入、标准输出和标准出错 91<br>5.4 缓存 91<br>5.5 打开流 94<br>5.6 读和写流 96<br>5.6.1 输入函数 96<br>5.6.2 输出函数 97<br>5.7 每次一行I/O 98<br>5.8 标准I/O的效率 99<br>5.9 二进制I/O 100<br>5.10 定位流 102<br>5.11 格式化I/O 103<br>5.11.1 格式化输出 103<br>5.11.2 格式化输入 103<br>5.12 实现细节 104<br>5.13 临时文件 105<br>5.14 标准I/O的替代软件 108<br>5.15 小结 108<br>习题 108<br>第6章 系统数据文件和信息 110<br>6.1 引言 110<br>6.2 口令文件 110<br>6.3 阴影口令 112<br>6.4 组文件 113<br>6.5 添加组ID 114<br>6.6 其他数据文件 115<br>6.7 登录会计 116<br>6.8 系统标识 116<br>6.9 时间和日期例程 117<br>6.10 小结 121<br>习题 121<br>第7章 UNIX进程的环境 122<br>7.1 引言 122<br>7.2 main 函数 122<br>7.3 进程终止 122<br>7.3.1 exit和_exit函数 122<br>7.3.2 atexit函数 124<br>7.4 命令行参数 125<br>7.5 环境表 126<br>7.6 C程序的存储空间布局 126<br>7.7 共享库 127<br>7.8 存储器分配 128<br>7.9 环境变量 130<br>7.10 setjmp 和longjmp函数 132<br>7.10.1 自动、寄存器和易失变量 134<br>7.10.2 自动变量的潜在问题 136<br>7.11 getrlimit 和setrlimit函数 136<br>7.12 小结 139<br>习题 140<br>第8章 进程控制 141<br>8.1 引言 141<br>8.2 进程标识 141<br>8.3 fork函数 142<br>8.4 vfork 函数 145<br>8.5 exit函数 147<br>8.6 wait和waitpid函数 148<br>8.7 wait3和wait4函数 152<br>8.8 竞态条件 153<br>8.9 exec函数 156<br>8.10 更改用户ID和组ID 160<br>8.10.1 setreuid 和setregid函数 162<br>8.10.2 seteuid和 setegid函数 163<br>8.10.3 组ID 163<br>8.11 解释器文件 164<br>8.12 system函数 167<br>8.13 进程会计 171<br>8.14 用户标识 175<br>8.15 进程时间 176<br>8.16 小结 178<br>习题 178<br>第9章 进程关系 180<br>9.1 引言 180<br>9.2 终端登录 180<br>9.2.1 4.3+BSD终端登录 180<br>9.2.2 SVR4终端登录 182<br>9.3 网络登录 182<br>9.3.1 4.3+BSD网络登录 182<br>9.3.2 SVR4网络登录 183<br>9.4 进程组 183<br>9.5 对话期 184<br>9.6 控制终端 185<br>9.7 tcgetpgrp 和tcsetpgrp函数 187<br>9.8 作业控制 187<br>9.9 shell执行程序 189<br>9.10 孤儿进程组 193<br>9.11 4.3+BSD实现 195<br>9.12 小结 197<br>习题 197<br>第10章 信号 198<br>10.1 引言 198<br>10.2 信号的概念 198<br>10.3 signal函数 203<br>10.3.1 程序起动 205<br>10.3.2 进程创建 206<br>10.4 不可靠的信号 206<br>10.5 中断的系统调用 207<br>10.6 可再入函数 209<br>10.7 SIGCLD语义 211<br>10.8 可靠信号术语和语义 213<br>10.9 kill和raise函数 213<br>10.10 alarm和pause函数 214<br>10.11 信号集 219<br>10.12 sigprocmask 函数 220<br>10.13 sigpending函数 222<br>10.14 sigaction函数 223<br>10.15 sigsetjmp 和siglongjmp函数 226<br>10.16 sigsuspend函数 229<br>10.17 abort函数 234<br>10.18 system函数 235<br>10.19 sleep函数 240<br>10.20 作业控制信号 241<br>10.21 其他特征 243<br>10.21.1 信号名字 243<br>10.21.2 SVR4信号处理程序的附<br> 加参数 244<br>10.21.3 4.3+BSD信号处理程序的附<br>加参数 244<br>10.22 小结 244<br>习题 244<br>第11章 终端I/O 246<br>11.1 引言 246<br>11.2 综述 246<br>11.3 特殊输入字符 250<br>11.4 获得和设置终端属性 254<br>11.5 终端选择标志 254<br>11.6 stty命令 258<br>11.7 波特率函数 259<br>11.8 行控制函数 260<br>11.9 终端标识 260<br>11.10 规范方式 263<br>11.11 非规范方式 266<br>11.12 终端的窗口大小 270<br>11.13 termcap, terminfo和 curses 271<br>11.14 小结 272<br>习题 272<br>第12章 高级I/O 273<br>12.1 引言 273<br>12.2 非阻塞I/O 273<br>12.3 记录锁 275<br>12.3.1 历史 276<br>12.3.2 fcntl记录锁 276<br>12.3.3 锁的隐含继承和释放 280<br>12.3.4 4.3+BSD的实现 281<br>12.3.5 建议性锁和强制性锁 284<br>12.4 流 288<br>12.4.1 流消息 289<br>12.4.2 putmsg和putpmsg函数 290<br>12.4.3 流ioctl操作 291<br>12.4.4 write至流设备 294<br>12.4.5 写方式 294<br>12.4.6 getmsg和getpmsg函数 294<br>12.4.7 读方式 295<br>12.5 I/O多路转接 296<br>12.5.1 select函数 298<br>12.5.2 poll函数 301<br>12.6 异步I/O 303<br>12.6.1 SVR4 303<br>12.6.2 4.3+BSD 303<br>12.7 readv和writev函数 304<br>12.8 readn和writen函数 306<br>12.9 存储映射I/O 307<br>12.10 小结 311<br>习题 311<br>第13章 精灵进程 312<br>13.1 引言 312<br>13.2 精灵进程的特征 312<br>13.3 编程规则 313<br>13.4 出错记录 314<br>13.4.1 SVR4流log驱动程序 315<br>13.4.2 4.3+BSD syslog设施 316<br>13.5 客户机-服务器模型 319<br>13.6 小结 319<br>习题 319<br>第14章 进程间通信 320<br>14.1 引言 320<br>14.2 管道 320<br>14.3 popen和pclose函数 325<br>14.4 协同进程 330<br>14.5 FIFO 333<br>14.6 系统V IPC 335<br>14.6.1 标识符和关键字 336<br>14.6.2 许可权结构 337<br>14.6.3 结构限制 337<br>14.6.4 优点和缺点 337<br>14.7 消息队列 338<br>14.8 信号量 342<br>14.9 共享存储 346<br>14.10 客户机-服务器属性 351<br>14.11 小结 353<br>习题 353<br>第15章 高级进程间通信 355<br>15.1 引言 355<br>15.2 流管道 355<br>15.3 传送文件描述符 358<br>15.3.1 SVR4 360<br>15.3.2 4.3BSD 361<br>15.3.3 4.3+BSD 364<br>15.4 open服务器第1版 366<br>15.5 客户机-服务器连接函数 371<br>15.5.1 SVR4 372<br>15.5.2 4.3+BSD 375<br>15.6 open服务器第2版 378<br>15.7 小结 385<br>习题 385<br>第16章 数据库函数库 386<br>16.1 引言 386<br>16.2 历史 386<br>16.3 函数库 386<br>16.4 实现概述 388<br>16.5 集中式或非集中式 390<br>16.6 并发 391<br>16.6.1 粗锁 391<br>16.6.2 细锁 391<br>16.7 源码 392<br>16.8 性能 409<br>16.8.1 单进程的结果 410<br>16.8.2 多进程的结果 410<br>16.9 小结 412<br>习题 412<br>第17章 与PostScript打印机通信 413<br>17.1 引言 413<br>17.2 PostScript通信机制 413<br>17.3 假脱机打印 415<br>17.4 源码 417<br>17.5 小结 434<br>习题 434<br>第18章 调制解调器拨号器 435<br>18.1 引言 435<br>18.2 历史 435<br>18.3 程序设计 436<br>18.4 数据文件 437<br>18.5 服务器设计 439<br>18.6 服务器源码 439<br>18.7 客户机设计 463<br>18.7.1 终端行规程 463<br>18.7.2 一个进程还是两个进程 464<br>18.8 客户机源码 465<br>18.9 小结 474<br>习题 474<br>第19章 伪终端 476<br>19.1 引言 476<br>19.2 概述 476<br>19.2.1 网络登录服务器 477<br>19.2.2 script程序 478<br>19.2.3 expect程序 479<br>19.2.4 运行协同进程 479<br>19.2.5 观看长时间运行程序的输出 479<br>19.3 打开伪终端设备 480<br>19.3.1 SVR4 481<br>19.3.2 4.3+BSD 482<br>19.4 pty_fork函数 484<br>19.5 pty程序 486<br>19.6 使用pty程序 489<br>19.6.1 utmp文件 489<br>19.6.2 作业控制交互 489<br>19.6.3 检查长时间运行程序的输出 491<br>19.6.4 script程序 491<br>19.6.5 运行协同进程 492<br>19.6.6 用非交互模式驱动交互式<br> 程序 492<br>19.7 其他特性 494<br>19.7.1 打包模式 494<br>19.7.2 远程模式 494<br>19.7.3 窗口大小变化 495<br>19.7.4 信号发生 495<br>19.8 小结 495<br>习题 495<br>附录A 函数原型 497<br>附录B 其他源代码 512<br>附录C 习题答案 518<br>参考书目 536<br>

2007-11-22

UNIX 环境高级编程 part4

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。 <br><br>目 录<br>译者序<br>译者简介<br>前言<br>第1章 UNIX基础知识 1<br>1.1 引言 1<br>1.2 登录 1<br>1.2.1 登录名 1<br>1.2.2 shell 1<br>1.3 文件和目录 2<br>1.3.1 文件系统 2<br>1.3.2 文件名 2<br>1.3.3 路径名 2<br>1.3.4 工作目录 4<br>1.3.5 起始目录 4<br>1.4 输入和输出 5<br>1.4.1 文件描述符 5<br>1.4.2 标准输入、标准输出和标准<br> 出错 5<br>1.4.3 不用缓存的I/O 5<br>1.4.4 标准I/O 6<br>1.5 程序和进程 7<br>1.5.1 程序 7<br>1.5.2 进程和进程ID 7<br>1.5.3 进程控制 7<br>1.6 ANSI C 9<br>1.6.1 函数原型 9<br>1.6.2 类属指针 9<br>1.6.3 原始系统数据类型 10<br>1.7 出错处理 10<br>1.8 用户标识 11<br>1.8.1 用户ID 11<br>1.8.2 组ID 12<br>1.8.3 添加组ID 12<br>1.9 信号 12<br>1.10 UNIX时间值 14<br>1.11 系统调用和库函数 14<br>1.12 小结 16<br>习题 16<br>第2章 UNIX标准化及实现 17<br>2.1 引言 17<br>2.2 UNIX标准化 17<br>2.2.1 ANSI C 17<br>2.2.2 IEEE POSIX 18<br>2.2.3 X/Open XPG3 19<br>2.2.4 FIPS 19<br>2.3 UNIX实现 19<br>2.3.1 SVR4 20<br>2.3.2 4.3+BSD 20<br>2.4 标准和实现的关系 21<br>2.5 限制 21<br>2.5.1 ANSI C限制 22<br>2.5.2 POSIX限制 22<br>2.5.3 XPG3限制 24<br>2.5.4 sysconf、pathconf 和fpathconf<br>函数 24<br>2.5.5 FIPS 151-1要求 28<br>2.5.6 限制总结 28<br>2.5.7 未确定的运行时间限制 29<br>2.6 功能测试宏 32<br>2.7 基本系统数据类型 32<br>2.8 标准之间的冲突 33<br>2.9 小结 34<br>习题 34<br>第3章 文件I/O 35<br>3.1 引言 35<br>3.2 文件描述符 35<br>3.3 open函数 35<br>3.4 creat函数 37<br>3.5 close函数 37<br>3.6 lseek函数 38<br>3.7 read函数 40<br>3.8 write函数 41<br>3.9 I/O的效率 41<br>3.10 文件共享 42<br>3.11 原子操作 45<br>3.11.1 添加至一个文件 45<br>3.11.2 创建一个文件 45<br>3.12 dup和dup2函数 46<br>3.13 fcntl函数 47<br>3.14 ioctl函数 50<br>3.15 /dev/fd 51<br>3.16 小结 52<br>习题 52<br>第4章 文件和目录 54<br>4.1 引言 54<br>4.2 stat, fstat和lstat函数 54<br>4.3 文件类型 55<br>4.4 设置-用户-ID和设置-组-ID 57<br>4.5 文件存取许可权 58<br>4.6 新文件和目录的所有权 60<br>4.7 access函数 60<br>4.8 umask函数 62<br>4.9 chmod和fchmod函数 63<br>4.10 粘住位 65<br>4.11 chown, fchown和 lchown函数 66<br>4.12 文件长度 67<br>4.13 文件截短 68<br>4.14 文件系统 69<br>4.15 link, unlink, remove和rename <br> 函数 71<br>4.16 符号连接 73<br>4.17 symlink 和readlink函数 76<br>4.18 文件的时间 76<br>4.19 utime函数 78<br>4.20 mkdir和rmdir函数 79<br>4.21 读目录 80<br>4.22 chdir, fchdir和getcwd函数 84<br>4.23 特殊设备文件 86<br>4.24 sync和fsync函数 87<br>4.25 文件存取许可权位小结 88<br>4.26 小结 89<br>习题 89<br>第5章 标准I/O库 91<br>5.1 引言 91<br>5.2 流和FILE对象 91<br>5.3 标准输入、标准输出和标准出错 91<br>5.4 缓存 91<br>5.5 打开流 94<br>5.6 读和写流 96<br>5.6.1 输入函数 96<br>5.6.2 输出函数 97<br>5.7 每次一行I/O 98<br>5.8 标准I/O的效率 99<br>5.9 二进制I/O 100<br>5.10 定位流 102<br>5.11 格式化I/O 103<br>5.11.1 格式化输出 103<br>5.11.2 格式化输入 103<br>5.12 实现细节 104<br>5.13 临时文件 105<br>5.14 标准I/O的替代软件 108<br>5.15 小结 108<br>习题 108<br>第6章 系统数据文件和信息 110<br>6.1 引言 110<br>6.2 口令文件 110<br>6.3 阴影口令 112<br>6.4 组文件 113<br>6.5 添加组ID 114<br>6.6 其他数据文件 115<br>6.7 登录会计 116<br>6.8 系统标识 116<br>6.9 时间和日期例程 117<br>6.10 小结 121<br>习题 121<br>第7章 UNIX进程的环境 122<br>7.1 引言 122<br>7.2 main 函数 122<br>7.3 进程终止 122<br>7.3.1 exit和_exit函数 122<br>7.3.2 atexit函数 124<br>7.4 命令行参数 125<br>7.5 环境表 126<br>7.6 C程序的存储空间布局 126<br>7.7 共享库 127<br>7.8 存储器分配 128<br>7.9 环境变量 130<br>7.10 setjmp 和longjmp函数 132<br>7.10.1 自动、寄存器和易失变量 134<br>7.10.2 自动变量的潜在问题 136<br>7.11 getrlimit 和setrlimit函数 136<br>7.12 小结 139<br>习题 140<br>第8章 进程控制 141<br>8.1 引言 141<br>8.2 进程标识 141<br>8.3 fork函数 142<br>8.4 vfork 函数 145<br>8.5 exit函数 147<br>8.6 wait和waitpid函数 148<br>8.7 wait3和wait4函数 152<br>8.8 竞态条件 153<br>8.9 exec函数 156<br>8.10 更改用户ID和组ID 160<br>8.10.1 setreuid 和setregid函数 162<br>8.10.2 seteuid和 setegid函数 163<br>8.10.3 组ID 163<br>8.11 解释器文件 164<br>8.12 system函数 167<br>8.13 进程会计 171<br>8.14 用户标识 175<br>8.15 进程时间 176<br>8.16 小结 178<br>习题 178<br>第9章 进程关系 180<br>9.1 引言 180<br>9.2 终端登录 180<br>9.2.1 4.3+BSD终端登录 180<br>9.2.2 SVR4终端登录 182<br>9.3 网络登录 182<br>9.3.1 4.3+BSD网络登录 182<br>9.3.2 SVR4网络登录 183<br>9.4 进程组 183<br>9.5 对话期 184<br>9.6 控制终端 185<br>9.7 tcgetpgrp 和tcsetpgrp函数 187<br>9.8 作业控制 187<br>9.9 shell执行程序 189<br>9.10 孤儿进程组 193<br>9.11 4.3+BSD实现 195<br>9.12 小结 197<br>习题 197<br>第10章 信号 198<br>10.1 引言 198<br>10.2 信号的概念 198<br>10.3 signal函数 203<br>10.3.1 程序起动 205<br>10.3.2 进程创建 206<br>10.4 不可靠的信号 206<br>10.5 中断的系统调用 207<br>10.6 可再入函数 209<br>10.7 SIGCLD语义 211<br>10.8 可靠信号术语和语义 213<br>10.9 kill和raise函数 213<br>10.10 alarm和pause函数 214<br>10.11 信号集 219<br>10.12 sigprocmask 函数 220<br>10.13 sigpending函数 222<br>10.14 sigaction函数 223<br>10.15 sigsetjmp 和siglongjmp函数 226<br>10.16 sigsuspend函数 229<br>10.17 abort函数 234<br>10.18 system函数 235<br>10.19 sleep函数 240<br>10.20 作业控制信号 241<br>10.21 其他特征 243<br>10.21.1 信号名字 243<br>10.21.2 SVR4信号处理程序的附<br> 加参数 244<br>10.21.3 4.3+BSD信号处理程序的附<br>加参数 244<br>10.22 小结 244<br>习题 244<br>第11章 终端I/O 246<br>11.1 引言 246<br>11.2 综述 246<br>11.3 特殊输入字符 250<br>11.4 获得和设置终端属性 254<br>11.5 终端选择标志 254<br>11.6 stty命令 258<br>11.7 波特率函数 259<br>11.8 行控制函数 260<br>11.9 终端标识 260<br>11.10 规范方式 263<br>11.11 非规范方式 266<br>11.12 终端的窗口大小 270<br>11.13 termcap, terminfo和 curses 271<br>11.14 小结 272<br>习题 272<br>第12章 高级I/O 273<br>12.1 引言 273<br>12.2 非阻塞I/O 273<br>12.3 记录锁 275<br>12.3.1 历史 276<br>12.3.2 fcntl记录锁 276<br>12.3.3 锁的隐含继承和释放 280<br>12.3.4 4.3+BSD的实现 281<br>12.3.5 建议性锁和强制性锁 284<br>12.4 流 288<br>12.4.1 流消息 289<br>12.4.2 putmsg和putpmsg函数 290<br>12.4.3 流ioctl操作 291<br>12.4.4 write至流设备 294<br>12.4.5 写方式 294<br>12.4.6 getmsg和getpmsg函数 294<br>12.4.7 读方式 295<br>12.5 I/O多路转接 296<br>12.5.1 select函数 298<br>12.5.2 poll函数 301<br>12.6 异步I/O 303<br>12.6.1 SVR4 303<br>12.6.2 4.3+BSD 303<br>12.7 readv和writev函数 304<br>12.8 readn和writen函数 306<br>12.9 存储映射I/O 307<br>12.10 小结 311<br>习题 311<br>第13章 精灵进程 312<br>13.1 引言 312<br>13.2 精灵进程的特征 312<br>13.3 编程规则 313<br>13.4 出错记录 314<br>13.4.1 SVR4流log驱动程序 315<br>13.4.2 4.3+BSD syslog设施 316<br>13.5 客户机-服务器模型 319<br>13.6 小结 319<br>习题 319<br>第14章 进程间通信 320<br>14.1 引言 320<br>14.2 管道 320<br>14.3 popen和pclose函数 325<br>14.4 协同进程 330<br>14.5 FIFO 333<br>14.6 系统V IPC 335<br>14.6.1 标识符和关键字 336<br>14.6.2 许可权结构 337<br>14.6.3 结构限制 337<br>14.6.4 优点和缺点 337<br>14.7 消息队列 338<br>14.8 信号量 342<br>14.9 共享存储 346<br>14.10 客户机-服务器属性 351<br>14.11 小结 353<br>习题 353<br>第15章 高级进程间通信 355<br>15.1 引言 355<br>15.2 流管道 355<br>15.3 传送文件描述符 358<br>15.3.1 SVR4 360<br>15.3.2 4.3BSD 361<br>15.3.3 4.3+BSD 364<br>15.4 open服务器第1版 366<br>15.5 客户机-服务器连接函数 371<br>15.5.1 SVR4 372<br>15.5.2 4.3+BSD 375<br>15.6 open服务器第2版 378<br>15.7 小结 385<br>习题 385<br>第16章 数据库函数库 386<br>16.1 引言 386<br>16.2 历史 386<br>16.3 函数库 386<br>16.4 实现概述 388<br>16.5 集中式或非集中式 390<br>16.6 并发 391<br>16.6.1 粗锁 391<br>16.6.2 细锁 391<br>16.7 源码 392<br>16.8 性能 409<br>16.8.1 单进程的结果 410<br>16.8.2 多进程的结果 410<br>16.9 小结 412<br>习题 412<br>第17章 与PostScript打印机通信 413<br>17.1 引言 413<br>17.2 PostScript通信机制 413<br>17.3 假脱机打印 415<br>17.4 源码 417<br>17.5 小结 434<br>习题 434<br>第18章 调制解调器拨号器 435<br>18.1 引言 435<br>18.2 历史 435<br>18.3 程序设计 436<br>18.4 数据文件 437<br>18.5 服务器设计 439<br>18.6 服务器源码 439<br>18.7 客户机设计 463<br>18.7.1 终端行规程 463<br>18.7.2 一个进程还是两个进程 464<br>18.8 客户机源码 465<br>18.9 小结 474<br>习题 474<br>第19章 伪终端 476<br>19.1 引言 476<br>19.2 概述 476<br>19.2.1 网络登录服务器 477<br>19.2.2 script程序 478<br>19.2.3 expect程序 479<br>19.2.4 运行协同进程 479<br>19.2.5 观看长时间运行程序的输出 479<br>19.3 打开伪终端设备 480<br>19.3.1 SVR4 481<br>19.3.2 4.3+BSD 482<br>19.4 pty_fork函数 484<br>19.5 pty程序 486<br>19.6 使用pty程序 489<br>19.6.1 utmp文件 489<br>19.6.2 作业控制交互 489<br>19.6.3 检查长时间运行程序的输出 491<br>19.6.4 script程序 491<br>19.6.5 运行协同进程 492<br>19.6.6 用非交互模式驱动交互式<br> 程序 492<br>19.7 其他特性 494<br>19.7.1 打包模式 494<br>19.7.2 远程模式 494<br>19.7.3 窗口大小变化 495<br>19.7.4 信号发生 495<br>19.8 小结 495<br>习题 495<br>附录A 函数原型 497<br>附录B 其他源代码 512<br>附录C 习题答案 518<br>参考书目 536<br>

2007-11-22

UNIX 环境高级编程 part3

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。 <br><br>目 录<br>译者序<br>译者简介<br>前言<br>第1章 UNIX基础知识 1<br>1.1 引言 1<br>1.2 登录 1<br>1.2.1 登录名 1<br>1.2.2 shell 1<br>1.3 文件和目录 2<br>1.3.1 文件系统 2<br>1.3.2 文件名 2<br>1.3.3 路径名 2<br>1.3.4 工作目录 4<br>1.3.5 起始目录 4<br>1.4 输入和输出 5<br>1.4.1 文件描述符 5<br>1.4.2 标准输入、标准输出和标准<br> 出错 5<br>1.4.3 不用缓存的I/O 5<br>1.4.4 标准I/O 6<br>1.5 程序和进程 7<br>1.5.1 程序 7<br>1.5.2 进程和进程ID 7<br>1.5.3 进程控制 7<br>1.6 ANSI C 9<br>1.6.1 函数原型 9<br>1.6.2 类属指针 9<br>1.6.3 原始系统数据类型 10<br>1.7 出错处理 10<br>1.8 用户标识 11<br>1.8.1 用户ID 11<br>1.8.2 组ID 12<br>1.8.3 添加组ID 12<br>1.9 信号 12<br>1.10 UNIX时间值 14<br>1.11 系统调用和库函数 14<br>1.12 小结 16<br>习题 16<br>第2章 UNIX标准化及实现 17<br>2.1 引言 17<br>2.2 UNIX标准化 17<br>2.2.1 ANSI C 17<br>2.2.2 IEEE POSIX 18<br>2.2.3 X/Open XPG3 19<br>2.2.4 FIPS 19<br>2.3 UNIX实现 19<br>2.3.1 SVR4 20<br>2.3.2 4.3+BSD 20<br>2.4 标准和实现的关系 21<br>2.5 限制 21<br>2.5.1 ANSI C限制 22<br>2.5.2 POSIX限制 22<br>2.5.3 XPG3限制 24<br>2.5.4 sysconf、pathconf 和fpathconf<br>函数 24<br>2.5.5 FIPS 151-1要求 28<br>2.5.6 限制总结 28<br>2.5.7 未确定的运行时间限制 29<br>2.6 功能测试宏 32<br>2.7 基本系统数据类型 32<br>2.8 标准之间的冲突 33<br>2.9 小结 34<br>习题 34<br>第3章 文件I/O 35<br>3.1 引言 35<br>3.2 文件描述符 35<br>3.3 open函数 35<br>3.4 creat函数 37<br>3.5 close函数 37<br>3.6 lseek函数 38<br>3.7 read函数 40<br>3.8 write函数 41<br>3.9 I/O的效率 41<br>3.10 文件共享 42<br>3.11 原子操作 45<br>3.11.1 添加至一个文件 45<br>3.11.2 创建一个文件 45<br>3.12 dup和dup2函数 46<br>3.13 fcntl函数 47<br>3.14 ioctl函数 50<br>3.15 /dev/fd 51<br>3.16 小结 52<br>习题 52<br>第4章 文件和目录 54<br>4.1 引言 54<br>4.2 stat, fstat和lstat函数 54<br>4.3 文件类型 55<br>4.4 设置-用户-ID和设置-组-ID 57<br>4.5 文件存取许可权 58<br>4.6 新文件和目录的所有权 60<br>4.7 access函数 60<br>4.8 umask函数 62<br>4.9 chmod和fchmod函数 63<br>4.10 粘住位 65<br>4.11 chown, fchown和 lchown函数 66<br>4.12 文件长度 67<br>4.13 文件截短 68<br>4.14 文件系统 69<br>4.15 link, unlink, remove和rename <br> 函数 71<br>4.16 符号连接 73<br>4.17 symlink 和readlink函数 76<br>4.18 文件的时间 76<br>4.19 utime函数 78<br>4.20 mkdir和rmdir函数 79<br>4.21 读目录 80<br>4.22 chdir, fchdir和getcwd函数 84<br>4.23 特殊设备文件 86<br>4.24 sync和fsync函数 87<br>4.25 文件存取许可权位小结 88<br>4.26 小结 89<br>习题 89<br>第5章 标准I/O库 91<br>5.1 引言 91<br>5.2 流和FILE对象 91<br>5.3 标准输入、标准输出和标准出错 91<br>5.4 缓存 91<br>5.5 打开流 94<br>5.6 读和写流 96<br>5.6.1 输入函数 96<br>5.6.2 输出函数 97<br>5.7 每次一行I/O 98<br>5.8 标准I/O的效率 99<br>5.9 二进制I/O 100<br>5.10 定位流 102<br>5.11 格式化I/O 103<br>5.11.1 格式化输出 103<br>5.11.2 格式化输入 103<br>5.12 实现细节 104<br>5.13 临时文件 105<br>5.14 标准I/O的替代软件 108<br>5.15 小结 108<br>习题 108<br>第6章 系统数据文件和信息 110<br>6.1 引言 110<br>6.2 口令文件 110<br>6.3 阴影口令 112<br>6.4 组文件 113<br>6.5 添加组ID 114<br>6.6 其他数据文件 115<br>6.7 登录会计 116<br>6.8 系统标识 116<br>6.9 时间和日期例程 117<br>6.10 小结 121<br>习题 121<br>第7章 UNIX进程的环境 122<br>7.1 引言 122<br>7.2 main 函数 122<br>7.3 进程终止 122<br>7.3.1 exit和_exit函数 122<br>7.3.2 atexit函数 124<br>7.4 命令行参数 125<br>7.5 环境表 126<br>7.6 C程序的存储空间布局 126<br>7.7 共享库 127<br>7.8 存储器分配 128<br>7.9 环境变量 130<br>7.10 setjmp 和longjmp函数 132<br>7.10.1 自动、寄存器和易失变量 134<br>7.10.2 自动变量的潜在问题 136<br>7.11 getrlimit 和setrlimit函数 136<br>7.12 小结 139<br>习题 140<br>第8章 进程控制 141<br>8.1 引言 141<br>8.2 进程标识 141<br>8.3 fork函数 142<br>8.4 vfork 函数 145<br>8.5 exit函数 147<br>8.6 wait和waitpid函数 148<br>8.7 wait3和wait4函数 152<br>8.8 竞态条件 153<br>8.9 exec函数 156<br>8.10 更改用户ID和组ID 160<br>8.10.1 setreuid 和setregid函数 162<br>8.10.2 seteuid和 setegid函数 163<br>8.10.3 组ID 163<br>8.11 解释器文件 164<br>8.12 system函数 167<br>8.13 进程会计 171<br>8.14 用户标识 175<br>8.15 进程时间 176<br>8.16 小结 178<br>习题 178<br>第9章 进程关系 180<br>9.1 引言 180<br>9.2 终端登录 180<br>9.2.1 4.3+BSD终端登录 180<br>9.2.2 SVR4终端登录 182<br>9.3 网络登录 182<br>9.3.1 4.3+BSD网络登录 182<br>9.3.2 SVR4网络登录 183<br>9.4 进程组 183<br>9.5 对话期 184<br>9.6 控制终端 185<br>9.7 tcgetpgrp 和tcsetpgrp函数 187<br>9.8 作业控制 187<br>9.9 shell执行程序 189<br>9.10 孤儿进程组 193<br>9.11 4.3+BSD实现 195<br>9.12 小结 197<br>习题 197<br>第10章 信号 198<br>10.1 引言 198<br>10.2 信号的概念 198<br>10.3 signal函数 203<br>10.3.1 程序起动 205<br>10.3.2 进程创建 206<br>10.4 不可靠的信号 206<br>10.5 中断的系统调用 207<br>10.6 可再入函数 209<br>10.7 SIGCLD语义 211<br>10.8 可靠信号术语和语义 213<br>10.9 kill和raise函数 213<br>10.10 alarm和pause函数 214<br>10.11 信号集 219<br>10.12 sigprocmask 函数 220<br>10.13 sigpending函数 222<br>10.14 sigaction函数 223<br>10.15 sigsetjmp 和siglongjmp函数 226<br>10.16 sigsuspend函数 229<br>10.17 abort函数 234<br>10.18 system函数 235<br>10.19 sleep函数 240<br>10.20 作业控制信号 241<br>10.21 其他特征 243<br>10.21.1 信号名字 243<br>10.21.2 SVR4信号处理程序的附<br> 加参数 244<br>10.21.3 4.3+BSD信号处理程序的附<br>加参数 244<br>10.22 小结 244<br>习题 244<br>第11章 终端I/O 246<br>11.1 引言 246<br>11.2 综述 246<br>11.3 特殊输入字符 250<br>11.4 获得和设置终端属性 254<br>11.5 终端选择标志 254<br>11.6 stty命令 258<br>11.7 波特率函数 259<br>11.8 行控制函数 260<br>11.9 终端标识 260<br>11.10 规范方式 263<br>11.11 非规范方式 266<br>11.12 终端的窗口大小 270<br>11.13 termcap, terminfo和 curses 271<br>11.14 小结 272<br>习题 272<br>第12章 高级I/O 273<br>12.1 引言 273<br>12.2 非阻塞I/O 273<br>12.3 记录锁 275<br>12.3.1 历史 276<br>12.3.2 fcntl记录锁 276<br>12.3.3 锁的隐含继承和释放 280<br>12.3.4 4.3+BSD的实现 281<br>12.3.5 建议性锁和强制性锁 284<br>12.4 流 288<br>12.4.1 流消息 289<br>12.4.2 putmsg和putpmsg函数 290<br>12.4.3 流ioctl操作 291<br>12.4.4 write至流设备 294<br>12.4.5 写方式 294<br>12.4.6 getmsg和getpmsg函数 294<br>12.4.7 读方式 295<br>12.5 I/O多路转接 296<br>12.5.1 select函数 298<br>12.5.2 poll函数 301<br>12.6 异步I/O 303<br>12.6.1 SVR4 303<br>12.6.2 4.3+BSD 303<br>12.7 readv和writev函数 304<br>12.8 readn和writen函数 306<br>12.9 存储映射I/O 307<br>12.10 小结 311<br>习题 311<br>第13章 精灵进程 312<br>13.1 引言 312<br>13.2 精灵进程的特征 312<br>13.3 编程规则 313<br>13.4 出错记录 314<br>13.4.1 SVR4流log驱动程序 315<br>13.4.2 4.3+BSD syslog设施 316<br>13.5 客户机-服务器模型 319<br>13.6 小结 319<br>习题 319<br>第14章 进程间通信 320<br>14.1 引言 320<br>14.2 管道 320<br>14.3 popen和pclose函数 325<br>14.4 协同进程 330<br>14.5 FIFO 333<br>14.6 系统V IPC 335<br>14.6.1 标识符和关键字 336<br>14.6.2 许可权结构 337<br>14.6.3 结构限制 337<br>14.6.4 优点和缺点 337<br>14.7 消息队列 338<br>14.8 信号量 342<br>14.9 共享存储 346<br>14.10 客户机-服务器属性 351<br>14.11 小结 353<br>习题 353<br>第15章 高级进程间通信 355<br>15.1 引言 355<br>15.2 流管道 355<br>15.3 传送文件描述符 358<br>15.3.1 SVR4 360<br>15.3.2 4.3BSD 361<br>15.3.3 4.3+BSD 364<br>15.4 open服务器第1版 366<br>15.5 客户机-服务器连接函数 371<br>15.5.1 SVR4 372<br>15.5.2 4.3+BSD 375<br>15.6 open服务器第2版 378<br>15.7 小结 385<br>习题 385<br>第16章 数据库函数库 386<br>16.1 引言 386<br>16.2 历史 386<br>16.3 函数库 386<br>16.4 实现概述 388<br>16.5 集中式或非集中式 390<br>16.6 并发 391<br>16.6.1 粗锁 391<br>16.6.2 细锁 391<br>16.7 源码 392<br>16.8 性能 409<br>16.8.1 单进程的结果 410<br>16.8.2 多进程的结果 410<br>16.9 小结 412<br>习题 412<br>第17章 与PostScript打印机通信 413<br>17.1 引言 413<br>17.2 PostScript通信机制 413<br>17.3 假脱机打印 415<br>17.4 源码 417<br>17.5 小结 434<br>习题 434<br>第18章 调制解调器拨号器 435<br>18.1 引言 435<br>18.2 历史 435<br>18.3 程序设计 436<br>18.4 数据文件 437<br>18.5 服务器设计 439<br>18.6 服务器源码 439<br>18.7 客户机设计 463<br>18.7.1 终端行规程 463<br>18.7.2 一个进程还是两个进程 464<br>18.8 客户机源码 465<br>18.9 小结 474<br>习题 474<br>第19章 伪终端 476<br>19.1 引言 476<br>19.2 概述 476<br>19.2.1 网络登录服务器 477<br>19.2.2 script程序 478<br>19.2.3 expect程序 479<br>19.2.4 运行协同进程 479<br>19.2.5 观看长时间运行程序的输出 479<br>19.3 打开伪终端设备 480<br>19.3.1 SVR4 481<br>19.3.2 4.3+BSD 482<br>19.4 pty_fork函数 484<br>19.5 pty程序 486<br>19.6 使用pty程序 489<br>19.6.1 utmp文件 489<br>19.6.2 作业控制交互 489<br>19.6.3 检查长时间运行程序的输出 491<br>19.6.4 script程序 491<br>19.6.5 运行协同进程 492<br>19.6.6 用非交互模式驱动交互式<br> 程序 492<br>19.7 其他特性 494<br>19.7.1 打包模式 494<br>19.7.2 远程模式 494<br>19.7.3 窗口大小变化 495<br>19.7.4 信号发生 495<br>19.8 小结 495<br>习题 495<br>附录A 函数原型 497<br>附录B 其他源代码 512<br>附录C 习题答案 518<br>参考书目 536<br>

2007-11-22

UNIX 环境高级编程 part2

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。 <br><br>目 录<br>译者序<br>译者简介<br>前言<br>第1章 UNIX基础知识 1<br>1.1 引言 1<br>1.2 登录 1<br>1.2.1 登录名 1<br>1.2.2 shell 1<br>1.3 文件和目录 2<br>1.3.1 文件系统 2<br>1.3.2 文件名 2<br>1.3.3 路径名 2<br>1.3.4 工作目录 4<br>1.3.5 起始目录 4<br>1.4 输入和输出 5<br>1.4.1 文件描述符 5<br>1.4.2 标准输入、标准输出和标准<br> 出错 5<br>1.4.3 不用缓存的I/O 5<br>1.4.4 标准I/O 6<br>1.5 程序和进程 7<br>1.5.1 程序 7<br>1.5.2 进程和进程ID 7<br>1.5.3 进程控制 7<br>1.6 ANSI C 9<br>1.6.1 函数原型 9<br>1.6.2 类属指针 9<br>1.6.3 原始系统数据类型 10<br>1.7 出错处理 10<br>1.8 用户标识 11<br>1.8.1 用户ID 11<br>1.8.2 组ID 12<br>1.8.3 添加组ID 12<br>1.9 信号 12<br>1.10 UNIX时间值 14<br>1.11 系统调用和库函数 14<br>1.12 小结 16<br>习题 16<br>第2章 UNIX标准化及实现 17<br>2.1 引言 17<br>2.2 UNIX标准化 17<br>2.2.1 ANSI C 17<br>2.2.2 IEEE POSIX 18<br>2.2.3 X/Open XPG3 19<br>2.2.4 FIPS 19<br>2.3 UNIX实现 19<br>2.3.1 SVR4 20<br>2.3.2 4.3+BSD 20<br>2.4 标准和实现的关系 21<br>2.5 限制 21<br>2.5.1 ANSI C限制 22<br>2.5.2 POSIX限制 22<br>2.5.3 XPG3限制 24<br>2.5.4 sysconf、pathconf 和fpathconf<br>函数 24<br>2.5.5 FIPS 151-1要求 28<br>2.5.6 限制总结 28<br>2.5.7 未确定的运行时间限制 29<br>2.6 功能测试宏 32<br>2.7 基本系统数据类型 32<br>2.8 标准之间的冲突 33<br>2.9 小结 34<br>习题 34<br>第3章 文件I/O 35<br>3.1 引言 35<br>3.2 文件描述符 35<br>3.3 open函数 35<br>3.4 creat函数 37<br>3.5 close函数 37<br>3.6 lseek函数 38<br>3.7 read函数 40<br>3.8 write函数 41<br>3.9 I/O的效率 41<br>3.10 文件共享 42<br>3.11 原子操作 45<br>3.11.1 添加至一个文件 45<br>3.11.2 创建一个文件 45<br>3.12 dup和dup2函数 46<br>3.13 fcntl函数 47<br>3.14 ioctl函数 50<br>3.15 /dev/fd 51<br>3.16 小结 52<br>习题 52<br>第4章 文件和目录 54<br>4.1 引言 54<br>4.2 stat, fstat和lstat函数 54<br>4.3 文件类型 55<br>4.4 设置-用户-ID和设置-组-ID 57<br>4.5 文件存取许可权 58<br>4.6 新文件和目录的所有权 60<br>4.7 access函数 60<br>4.8 umask函数 62<br>4.9 chmod和fchmod函数 63<br>4.10 粘住位 65<br>4.11 chown, fchown和 lchown函数 66<br>4.12 文件长度 67<br>4.13 文件截短 68<br>4.14 文件系统 69<br>4.15 link, unlink, remove和rename <br> 函数 71<br>4.16 符号连接 73<br>4.17 symlink 和readlink函数 76<br>4.18 文件的时间 76<br>4.19 utime函数 78<br>4.20 mkdir和rmdir函数 79<br>4.21 读目录 80<br>4.22 chdir, fchdir和getcwd函数 84<br>4.23 特殊设备文件 86<br>4.24 sync和fsync函数 87<br>4.25 文件存取许可权位小结 88<br>4.26 小结 89<br>习题 89<br>第5章 标准I/O库 91<br>5.1 引言 91<br>5.2 流和FILE对象 91<br>5.3 标准输入、标准输出和标准出错 91<br>5.4 缓存 91<br>5.5 打开流 94<br>5.6 读和写流 96<br>5.6.1 输入函数 96<br>5.6.2 输出函数 97<br>5.7 每次一行I/O 98<br>5.8 标准I/O的效率 99<br>5.9 二进制I/O 100<br>5.10 定位流 102<br>5.11 格式化I/O 103<br>5.11.1 格式化输出 103<br>5.11.2 格式化输入 103<br>5.12 实现细节 104<br>5.13 临时文件 105<br>5.14 标准I/O的替代软件 108<br>5.15 小结 108<br>习题 108<br>第6章 系统数据文件和信息 110<br>6.1 引言 110<br>6.2 口令文件 110<br>6.3 阴影口令 112<br>6.4 组文件 113<br>6.5 添加组ID 114<br>6.6 其他数据文件 115<br>6.7 登录会计 116<br>6.8 系统标识 116<br>6.9 时间和日期例程 117<br>6.10 小结 121<br>习题 121<br>第7章 UNIX进程的环境 122<br>7.1 引言 122<br>7.2 main 函数 122<br>7.3 进程终止 122<br>7.3.1 exit和_exit函数 122<br>7.3.2 atexit函数 124<br>7.4 命令行参数 125<br>7.5 环境表 126<br>7.6 C程序的存储空间布局 126<br>7.7 共享库 127<br>7.8 存储器分配 128<br>7.9 环境变量 130<br>7.10 setjmp 和longjmp函数 132<br>7.10.1 自动、寄存器和易失变量 134<br>7.10.2 自动变量的潜在问题 136<br>7.11 getrlimit 和setrlimit函数 136<br>7.12 小结 139<br>习题 140<br>第8章 进程控制 141<br>8.1 引言 141<br>8.2 进程标识 141<br>8.3 fork函数 142<br>8.4 vfork 函数 145<br>8.5 exit函数 147<br>8.6 wait和waitpid函数 148<br>8.7 wait3和wait4函数 152<br>8.8 竞态条件 153<br>8.9 exec函数 156<br>8.10 更改用户ID和组ID 160<br>8.10.1 setreuid 和setregid函数 162<br>8.10.2 seteuid和 setegid函数 163<br>8.10.3 组ID 163<br>8.11 解释器文件 164<br>8.12 system函数 167<br>8.13 进程会计 171<br>8.14 用户标识 175<br>8.15 进程时间 176<br>8.16 小结 178<br>习题 178<br>第9章 进程关系 180<br>9.1 引言 180<br>9.2 终端登录 180<br>9.2.1 4.3+BSD终端登录 180<br>9.2.2 SVR4终端登录 182<br>9.3 网络登录 182<br>9.3.1 4.3+BSD网络登录 182<br>9.3.2 SVR4网络登录 183<br>9.4 进程组 183<br>9.5 对话期 184<br>9.6 控制终端 185<br>9.7 tcgetpgrp 和tcsetpgrp函数 187<br>9.8 作业控制 187<br>9.9 shell执行程序 189<br>9.10 孤儿进程组 193<br>9.11 4.3+BSD实现 195<br>9.12 小结 197<br>习题 197<br>第10章 信号 198<br>10.1 引言 198<br>10.2 信号的概念 198<br>10.3 signal函数 203<br>10.3.1 程序起动 205<br>10.3.2 进程创建 206<br>10.4 不可靠的信号 206<br>10.5 中断的系统调用 207<br>10.6 可再入函数 209<br>10.7 SIGCLD语义 211<br>10.8 可靠信号术语和语义 213<br>10.9 kill和raise函数 213<br>10.10 alarm和pause函数 214<br>10.11 信号集 219<br>10.12 sigprocmask 函数 220<br>10.13 sigpending函数 222<br>10.14 sigaction函数 223<br>10.15 sigsetjmp 和siglongjmp函数 226<br>10.16 sigsuspend函数 229<br>10.17 abort函数 234<br>10.18 system函数 235<br>10.19 sleep函数 240<br>10.20 作业控制信号 241<br>10.21 其他特征 243<br>10.21.1 信号名字 243<br>10.21.2 SVR4信号处理程序的附<br> 加参数 244<br>10.21.3 4.3+BSD信号处理程序的附<br>加参数 244<br>10.22 小结 244<br>习题 244<br>第11章 终端I/O 246<br>11.1 引言 246<br>11.2 综述 246<br>11.3 特殊输入字符 250<br>11.4 获得和设置终端属性 254<br>11.5 终端选择标志 254<br>11.6 stty命令 258<br>11.7 波特率函数 259<br>11.8 行控制函数 260<br>11.9 终端标识 260<br>11.10 规范方式 263<br>11.11 非规范方式 266<br>11.12 终端的窗口大小 270<br>11.13 termcap, terminfo和 curses 271<br>11.14 小结 272<br>习题 272<br>第12章 高级I/O 273<br>12.1 引言 273<br>12.2 非阻塞I/O 273<br>12.3 记录锁 275<br>12.3.1 历史 276<br>12.3.2 fcntl记录锁 276<br>12.3.3 锁的隐含继承和释放 280<br>12.3.4 4.3+BSD的实现 281<br>12.3.5 建议性锁和强制性锁 284<br>12.4 流 288<br>12.4.1 流消息 289<br>12.4.2 putmsg和putpmsg函数 290<br>12.4.3 流ioctl操作 291<br>12.4.4 write至流设备 294<br>12.4.5 写方式 294<br>12.4.6 getmsg和getpmsg函数 294<br>12.4.7 读方式 295<br>12.5 I/O多路转接 296<br>12.5.1 select函数 298<br>12.5.2 poll函数 301<br>12.6 异步I/O 303<br>12.6.1 SVR4 303<br>12.6.2 4.3+BSD 303<br>12.7 readv和writev函数 304<br>12.8 readn和writen函数 306<br>12.9 存储映射I/O 307<br>12.10 小结 311<br>习题 311<br>第13章 精灵进程 312<br>13.1 引言 312<br>13.2 精灵进程的特征 312<br>13.3 编程规则 313<br>13.4 出错记录 314<br>13.4.1 SVR4流log驱动程序 315<br>13.4.2 4.3+BSD syslog设施 316<br>13.5 客户机-服务器模型 319<br>13.6 小结 319<br>习题 319<br>第14章 进程间通信 320<br>14.1 引言 320<br>14.2 管道 320<br>14.3 popen和pclose函数 325<br>14.4 协同进程 330<br>14.5 FIFO 333<br>14.6 系统V IPC 335<br>14.6.1 标识符和关键字 336<br>14.6.2 许可权结构 337<br>14.6.3 结构限制 337<br>14.6.4 优点和缺点 337<br>14.7 消息队列 338<br>14.8 信号量 342<br>14.9 共享存储 346<br>14.10 客户机-服务器属性 351<br>14.11 小结 353<br>习题 353<br>第15章 高级进程间通信 355<br>15.1 引言 355<br>15.2 流管道 355<br>15.3 传送文件描述符 358<br>15.3.1 SVR4 360<br>15.3.2 4.3BSD 361<br>15.3.3 4.3+BSD 364<br>15.4 open服务器第1版 366<br>15.5 客户机-服务器连接函数 371<br>15.5.1 SVR4 372<br>15.5.2 4.3+BSD 375<br>15.6 open服务器第2版 378<br>15.7 小结 385<br>习题 385<br>第16章 数据库函数库 386<br>16.1 引言 386<br>16.2 历史 386<br>16.3 函数库 386<br>16.4 实现概述 388<br>16.5 集中式或非集中式 390<br>16.6 并发 391<br>16.6.1 粗锁 391<br>16.6.2 细锁 391<br>16.7 源码 392<br>16.8 性能 409<br>16.8.1 单进程的结果 410<br>16.8.2 多进程的结果 410<br>16.9 小结 412<br>习题 412<br>第17章 与PostScript打印机通信 413<br>17.1 引言 413<br>17.2 PostScript通信机制 413<br>17.3 假脱机打印 415<br>17.4 源码 417<br>17.5 小结 434<br>习题 434<br>第18章 调制解调器拨号器 435<br>18.1 引言 435<br>18.2 历史 435<br>18.3 程序设计 436<br>18.4 数据文件 437<br>18.5 服务器设计 439<br>18.6 服务器源码 439<br>18.7 客户机设计 463<br>18.7.1 终端行规程 463<br>18.7.2 一个进程还是两个进程 464<br>18.8 客户机源码 465<br>18.9 小结 474<br>习题 474<br>第19章 伪终端 476<br>19.1 引言 476<br>19.2 概述 476<br>19.2.1 网络登录服务器 477<br>19.2.2 script程序 478<br>19.2.3 expect程序 479<br>19.2.4 运行协同进程 479<br>19.2.5 观看长时间运行程序的输出 479<br>19.3 打开伪终端设备 480<br>19.3.1 SVR4 481<br>19.3.2 4.3+BSD 482<br>19.4 pty_fork函数 484<br>19.5 pty程序 486<br>19.6 使用pty程序 489<br>19.6.1 utmp文件 489<br>19.6.2 作业控制交互 489<br>19.6.3 检查长时间运行程序的输出 491<br>19.6.4 script程序 491<br>19.6.5 运行协同进程 492<br>19.6.6 用非交互模式驱动交互式<br> 程序 492<br>19.7 其他特性 494<br>19.7.1 打包模式 494<br>19.7.2 远程模式 494<br>19.7.3 窗口大小变化 495<br>19.7.4 信号发生 495<br>19.8 小结 495<br>习题 495<br>附录A 函数原型 497<br>附录B 其他源代码 512<br>附录C 习题答案 518<br>参考书目 536<br>

2007-11-22

UNIX环境高级编程 part1

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。 <br><br>目 录<br>译者序<br>译者简介<br>前言<br>第1章 UNIX基础知识 1<br>1.1 引言 1<br>1.2 登录 1<br>1.2.1 登录名 1<br>1.2.2 shell 1<br>1.3 文件和目录 2<br>1.3.1 文件系统 2<br>1.3.2 文件名 2<br>1.3.3 路径名 2<br>1.3.4 工作目录 4<br>1.3.5 起始目录 4<br>1.4 输入和输出 5<br>1.4.1 文件描述符 5<br>1.4.2 标准输入、标准输出和标准<br> 出错 5<br>1.4.3 不用缓存的I/O 5<br>1.4.4 标准I/O 6<br>1.5 程序和进程 7<br>1.5.1 程序 7<br>1.5.2 进程和进程ID 7<br>1.5.3 进程控制 7<br>1.6 ANSI C 9<br>1.6.1 函数原型 9<br>1.6.2 类属指针 9<br>1.6.3 原始系统数据类型 10<br>1.7 出错处理 10<br>1.8 用户标识 11<br>1.8.1 用户ID 11<br>1.8.2 组ID 12<br>1.8.3 添加组ID 12<br>1.9 信号 12<br>1.10 UNIX时间值 14<br>1.11 系统调用和库函数 14<br>1.12 小结 16<br>习题 16<br>第2章 UNIX标准化及实现 17<br>2.1 引言 17<br>2.2 UNIX标准化 17<br>2.2.1 ANSI C 17<br>2.2.2 IEEE POSIX 18<br>2.2.3 X/Open XPG3 19<br>2.2.4 FIPS 19<br>2.3 UNIX实现 19<br>2.3.1 SVR4 20<br>2.3.2 4.3+BSD 20<br>2.4 标准和实现的关系 21<br>2.5 限制 21<br>2.5.1 ANSI C限制 22<br>2.5.2 POSIX限制 22<br>2.5.3 XPG3限制 24<br>2.5.4 sysconf、pathconf 和fpathconf<br>函数 24<br>2.5.5 FIPS 151-1要求 28<br>2.5.6 限制总结 28<br>2.5.7 未确定的运行时间限制 29<br>2.6 功能测试宏 32<br>2.7 基本系统数据类型 32<br>2.8 标准之间的冲突 33<br>2.9 小结 34<br>习题 34<br>第3章 文件I/O 35<br>3.1 引言 35<br>3.2 文件描述符 35<br>3.3 open函数 35<br>3.4 creat函数 37<br>3.5 close函数 37<br>3.6 lseek函数 38<br>3.7 read函数 40<br>3.8 write函数 41<br>3.9 I/O的效率 41<br>3.10 文件共享 42<br>3.11 原子操作 45<br>3.11.1 添加至一个文件 45<br>3.11.2 创建一个文件 45<br>3.12 dup和dup2函数 46<br>3.13 fcntl函数 47<br>3.14 ioctl函数 50<br>3.15 /dev/fd 51<br>3.16 小结 52<br>习题 52<br>第4章 文件和目录 54<br>4.1 引言 54<br>4.2 stat, fstat和lstat函数 54<br>4.3 文件类型 55<br>4.4 设置-用户-ID和设置-组-ID 57<br>4.5 文件存取许可权 58<br>4.6 新文件和目录的所有权 60<br>4.7 access函数 60<br>4.8 umask函数 62<br>4.9 chmod和fchmod函数 63<br>4.10 粘住位 65<br>4.11 chown, fchown和 lchown函数 66<br>4.12 文件长度 67<br>4.13 文件截短 68<br>4.14 文件系统 69<br>4.15 link, unlink, remove和rename <br> 函数 71<br>4.16 符号连接 73<br>4.17 symlink 和readlink函数 76<br>4.18 文件的时间 76<br>4.19 utime函数 78<br>4.20 mkdir和rmdir函数 79<br>4.21 读目录 80<br>4.22 chdir, fchdir和getcwd函数 84<br>4.23 特殊设备文件 86<br>4.24 sync和fsync函数 87<br>4.25 文件存取许可权位小结 88<br>4.26 小结 89<br>习题 89<br>第5章 标准I/O库 91<br>5.1 引言 91<br>5.2 流和FILE对象 91<br>5.3 标准输入、标准输出和标准出错 91<br>5.4 缓存 91<br>5.5 打开流 94<br>5.6 读和写流 96<br>5.6.1 输入函数 96<br>5.6.2 输出函数 97<br>5.7 每次一行I/O 98<br>5.8 标准I/O的效率 99<br>5.9 二进制I/O 100<br>5.10 定位流 102<br>5.11 格式化I/O 103<br>5.11.1 格式化输出 103<br>5.11.2 格式化输入 103<br>5.12 实现细节 104<br>5.13 临时文件 105<br>5.14 标准I/O的替代软件 108<br>5.15 小结 108<br>习题 108<br>第6章 系统数据文件和信息 110<br>6.1 引言 110<br>6.2 口令文件 110<br>6.3 阴影口令 112<br>6.4 组文件 113<br>6.5 添加组ID 114<br>6.6 其他数据文件 115<br>6.7 登录会计 116<br>6.8 系统标识 116<br>6.9 时间和日期例程 117<br>6.10 小结 121<br>习题 121<br>第7章 UNIX进程的环境 122<br>7.1 引言 122<br>7.2 main 函数 122<br>7.3 进程终止 122<br>7.3.1 exit和_exit函数 122<br>7.3.2 atexit函数 124<br>7.4 命令行参数 125<br>7.5 环境表 126<br>7.6 C程序的存储空间布局 126<br>7.7 共享库 127<br>7.8 存储器分配 128<br>7.9 环境变量 130<br>7.10 setjmp 和longjmp函数 132<br>7.10.1 自动、寄存器和易失变量 134<br>7.10.2 自动变量的潜在问题 136<br>7.11 getrlimit 和setrlimit函数 136<br>7.12 小结 139<br>习题 140<br>第8章 进程控制 141<br>8.1 引言 141<br>8.2 进程标识 141<br>8.3 fork函数 142<br>8.4 vfork 函数 145<br>8.5 exit函数 147<br>8.6 wait和waitpid函数 148<br>8.7 wait3和wait4函数 152<br>8.8 竞态条件 153<br>8.9 exec函数 156<br>8.10 更改用户ID和组ID 160<br>8.10.1 setreuid 和setregid函数 162<br>8.10.2 seteuid和 setegid函数 163<br>8.10.3 组ID 163<br>8.11 解释器文件 164<br>8.12 system函数 167<br>8.13 进程会计 171<br>8.14 用户标识 175<br>8.15 进程时间 176<br>8.16 小结 178<br>习题 178<br>第9章 进程关系 180<br>9.1 引言 180<br>9.2 终端登录 180<br>9.2.1 4.3+BSD终端登录 180<br>9.2.2 SVR4终端登录 182<br>9.3 网络登录 182<br>9.3.1 4.3+BSD网络登录 182<br>9.3.2 SVR4网络登录 183<br>9.4 进程组 183<br>9.5 对话期 184<br>9.6 控制终端 185<br>9.7 tcgetpgrp 和tcsetpgrp函数 187<br>9.8 作业控制 187<br>9.9 shell执行程序 189<br>9.10 孤儿进程组 193<br>9.11 4.3+BSD实现 195<br>9.12 小结 197<br>习题 197<br>第10章 信号 198<br>10.1 引言 198<br>10.2 信号的概念 198<br>10.3 signal函数 203<br>10.3.1 程序起动 205<br>10.3.2 进程创建 206<br>10.4 不可靠的信号 206<br>10.5 中断的系统调用 207<br>10.6 可再入函数 209<br>10.7 SIGCLD语义 211<br>10.8 可靠信号术语和语义 213<br>10.9 kill和raise函数 213<br>10.10 alarm和pause函数 214<br>10.11 信号集 219<br>10.12 sigprocmask 函数 220<br>10.13 sigpending函数 222<br>10.14 sigaction函数 223<br>10.15 sigsetjmp 和siglongjmp函数 226<br>10.16 sigsuspend函数 229<br>10.17 abort函数 234<br>10.18 system函数 235<br>10.19 sleep函数 240<br>10.20 作业控制信号 241<br>10.21 其他特征 243<br>10.21.1 信号名字 243<br>10.21.2 SVR4信号处理程序的附<br> 加参数 244<br>10.21.3 4.3+BSD信号处理程序的附<br>加参数 244<br>10.22 小结 244<br>习题 244<br>第11章 终端I/O 246<br>11.1 引言 246<br>11.2 综述 246<br>11.3 特殊输入字符 250<br>11.4 获得和设置终端属性 254<br>11.5 终端选择标志 254<br>11.6 stty命令 258<br>11.7 波特率函数 259<br>11.8 行控制函数 260<br>11.9 终端标识 260<br>11.10 规范方式 263<br>11.11 非规范方式 266<br>11.12 终端的窗口大小 270<br>11.13 termcap, terminfo和 curses 271<br>11.14 小结 272<br>习题 272<br>第12章 高级I/O 273<br>12.1 引言 273<br>12.2 非阻塞I/O 273<br>12.3 记录锁 275<br>12.3.1 历史 276<br>12.3.2 fcntl记录锁 276<br>12.3.3 锁的隐含继承和释放 280<br>12.3.4 4.3+BSD的实现 281<br>12.3.5 建议性锁和强制性锁 284<br>12.4 流 288<br>12.4.1 流消息 289<br>12.4.2 putmsg和putpmsg函数 290<br>12.4.3 流ioctl操作 291<br>12.4.4 write至流设备 294<br>12.4.5 写方式 294<br>12.4.6 getmsg和getpmsg函数 294<br>12.4.7 读方式 295<br>12.5 I/O多路转接 296<br>12.5.1 select函数 298<br>12.5.2 poll函数 301<br>12.6 异步I/O 303<br>12.6.1 SVR4 303<br>12.6.2 4.3+BSD 303<br>12.7 readv和writev函数 304<br>12.8 readn和writen函数 306<br>12.9 存储映射I/O 307<br>12.10 小结 311<br>习题 311<br>第13章 精灵进程 312<br>13.1 引言 312<br>13.2 精灵进程的特征 312<br>13.3 编程规则 313<br>13.4 出错记录 314<br>13.4.1 SVR4流log驱动程序 315<br>13.4.2 4.3+BSD syslog设施 316<br>13.5 客户机-服务器模型 319<br>13.6 小结 319<br>习题 319<br>第14章 进程间通信 320<br>14.1 引言 320<br>14.2 管道 320<br>14.3 popen和pclose函数 325<br>14.4 协同进程 330<br>14.5 FIFO 333<br>14.6 系统V IPC 335<br>14.6.1 标识符和关键字 336<br>14.6.2 许可权结构 337<br>14.6.3 结构限制 337<br>14.6.4 优点和缺点 337<br>14.7 消息队列 338<br>14.8 信号量 342<br>14.9 共享存储 346<br>14.10 客户机-服务器属性 351<br>14.11 小结 353<br>习题 353<br>第15章 高级进程间通信 355<br>15.1 引言 355<br>15.2 流管道 355<br>15.3 传送文件描述符 358<br>15.3.1 SVR4 360<br>15.3.2 4.3BSD 361<br>15.3.3 4.3+BSD 364<br>15.4 open服务器第1版 366<br>15.5 客户机-服务器连接函数 371<br>15.5.1 SVR4 372<br>15.5.2 4.3+BSD 375<br>15.6 open服务器第2版 378<br>15.7 小结 385<br>习题 385<br>第16章 数据库函数库 386<br>16.1 引言 386<br>16.2 历史 386<br>16.3 函数库 386<br>16.4 实现概述 388<br>16.5 集中式或非集中式 390<br>16.6 并发 391<br>16.6.1 粗锁 391<br>16.6.2 细锁 391<br>16.7 源码 392<br>16.8 性能 409<br>16.8.1 单进程的结果 410<br>16.8.2 多进程的结果 410<br>16.9 小结 412<br>习题 412<br>第17章 与PostScript打印机通信 413<br>17.1 引言 413<br>17.2 PostScript通信机制 413<br>17.3 假脱机打印 415<br>17.4 源码 417<br>17.5 小结 434<br>习题 434<br>第18章 调制解调器拨号器 435<br>18.1 引言 435<br>18.2 历史 435<br>18.3 程序设计 436<br>18.4 数据文件 437<br>18.5 服务器设计 439<br>18.6 服务器源码 439<br>18.7 客户机设计 463<br>18.7.1 终端行规程 463<br>18.7.2 一个进程还是两个进程 464<br>18.8 客户机源码 465<br>18.9 小结 474<br>习题 474<br>第19章 伪终端 476<br>19.1 引言 476<br>19.2 概述 476<br>19.2.1 网络登录服务器 477<br>19.2.2 script程序 478<br>19.2.3 expect程序 479<br>19.2.4 运行协同进程 479<br>19.2.5 观看长时间运行程序的输出 479<br>19.3 打开伪终端设备 480<br>19.3.1 SVR4 481<br>19.3.2 4.3+BSD 482<br>19.4 pty_fork函数 484<br>19.5 pty程序 486<br>19.6 使用pty程序 489<br>19.6.1 utmp文件 489<br>19.6.2 作业控制交互 489<br>19.6.3 检查长时间运行程序的输出 491<br>19.6.4 script程序 491<br>19.6.5 运行协同进程 492<br>19.6.6 用非交互模式驱动交互式<br> 程序 492<br>19.7 其他特性 494<br>19.7.1 打包模式 494<br>19.7.2 远程模式 494<br>19.7.3 窗口大小变化 495<br>19.7.4 信号发生 495<br>19.8 小结 495<br>习题 495<br>附录A 函数原型 497<br>附录B 其他源代码 512<br>附录C 习题答案 518<br>参考书目 536<br>

2007-11-22

ServerSocket 用法详解

ServerSocket 用法详解(3)

2007-11-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除