
|
| Rich Teer,加拿大不列颠哥伦比亚省基洛纳市的一名UNIX顾问,UNIX社区中一名受人尊重的资深成员,知名的Solaris系统管理和编程专家,持有SCSA、SCNA和SCSA证书。他具有15年的C编程经验、9年多从事Sun系统工作的经验,其中有2年是Sun Microsystems公司的技术支持顾问。同时,他也是W.Richlard Stevens的畅销书((UNIX Network Programming》(第2版)的技术审校。 |
| 第1章引言 1.1简介 1.1.1在Solaris上编译C程序 1.2登录 1.3shell 1.4文件、目录和文件系统 示例:简单目录清单 包含头文件 1.5输入和输出 1.6程序、进程和线程 1.7错误处理 1.8用户标识 1.9信号 1.10UNIX时间值 1.11系统调用和库函数 1.1264位编程概述 1.12.1编写纯64位的程序 1.12.2编译和安装64位的程序 1.12.3大文件的编译环境 1.12.4过渡期的大文件编译环境 1.13小结 练习 第2章Solaris简史 2.1引言 2.2初期:SunOS 2.3SunOS之后:Solaris 2.4标准 2.4.1ANSI/ISO/IECC 2.4.2系统V接口定义 2.4.3IEEEPOSIX 2.4.4开放组的XPG4 2.4.5单一UNIX规范 2.5Solaris2.5 2.5.1Solaris2.5.1 2.6Solaris2.6 2.7Solaris7 2.8Solaris8 2.9Solaris9 2.10Solaris标准遵守情况 2.11编译符合标准的应用程序 2.12小结 练习 第二部分基本主题 第3章应用程序函数 3.1引言 3.2处理字符类 3.2.1测试字符类成员资格 3.2.2改变字符类成员资格 3.2.3字符类小结 3.3处理字符串 3.3.1得到字符串的长度 3.3.2比较字符串 3.3.3连接字符串 3.3.4复制字符串 3.3.5字符串查找函数 3.3.6复制字符串 3.3.8转换字符串的函数 3.9把字符串转换为数字 3.3.10把数字转换成字符串 3.4处理字节数组 3.4.1比较字节数组 3.4.2复制字节数组 3.4.3查找字节数组 3.5动态内存 3.5.1内存对齐 3.5.2分配动态内存 3.5.3释放动态内存 3.6其他的内存管理包 3.6.1malloc库 3.6.2bsdmalloc库 3.6.3mapmalloc库 3.6.4watchmalloc共享对象 3.6.5比较malloc库 3.7临时文件 3.7.1产生临时文件名 3.7.2创建临时文件 3.8分析命令行参数 3.9错误报告 3.10挂起进程 3.11小结 练习 第4章基本的文件I/O 4.1引言 4.2文件描述符 4.3open函数 4.6lseek和llseek函数 4.7tell函数 4.8read和pread函数 4.9write和pwrite函数 4.10readn和writen函数 4.11I/O效率 4.12文件共享 4.13原子的操作 4.14dup和dup2函数 4.15fcntl函数 4.16ioctl函数 4.17fdwalk函数 4.18直接I/O 4.19/dev/fd文件系统 4.20小结 第5章标准I/O库 5.1引言 5.2文件流、数据类型和常量 5.3标准输入、标准输出和标准错误输出 5.4打开文件流 5.5关闭文件流 5.6读和写 5.6.1字符输入函数 5.6.2字符输出函数 5.6.3行输入函数 5.6.4行输出函数 5.6.5二进制I/O 5.7流状态 5.8格式化I/O 5.8.1格式输出 5.8.2格式输入 5.8.3格式转换规范 5.8.4C语言转义序列 5.9定位流 5.10文件流锁定 5.10.1未锁定的文件流I/O 5.11缓冲 5.12标准I/O的效率 5.13小结 练习 第6章日期和时间操作 6.1引言 6.2转换时间的复杂性 6.3获得当前时间 6.3.1difftime函数 6.4设置当前时间 6.5获得当前时区 6.6在UNIX时间和日历时间进行转换 6.6.1localtime和localtime_r函数 6.6.2gmtime和gmtime_r函数 6.6.3mktime函数 6.7格式日期I/O 6.7.1将日期转换成格式字符串 6.7.2将格式字符串转换成日期 6.8小结 6.3编写一个程序,显示世界上不同时区的当前时间,包括北半球和南半球位置。 第7章用户和组 7.1引言 7.2用户名 7.3用户ID 7.4组ID 7.5组成员资格 7.8读取和加密口令 7.9组文件 7.10utmpx和wtmpx文件 7.11utmp和wtmp文件 7.12lastlog文件 7.13shells文件 7.14总结 第8章系统信息和资源限制 8.1引言 8.2系统信息和识别 8.3系统资源限制 8.4每个进程的资源限制 8.5资源控制工具 8.6资源控制示例 8.7资源使用信息 8.8使用/proc文件系统确定资源使用信息 8.9确定系统的平均负荷 8.10总结 练习 第9章安全的C编程 9.1引言 9.2缓冲区溢出 9.3程序的环境 9.4防御性编程 9.5最小特权原则 9.6使用chroot“监牢” 9.7编写安全程序的技巧 9.8总结 第三部分输入/输出 第10章文件和目录 10.1引言 10.2路径名组件 10.3stat、fstat和lstat函数 10.4文件类型 10.5设置-用户-ID和设置-组-ID 10.6粘着位 10.7文件访问权限 10.8access函数 10.9umask函数 10.10chmod和fchmod函数 10.11chown、fchown和lchown函数 10.12文件尺寸 10.12.1稀疏文件 10.13文件截取 10.14文件系统 10.15link和unlink函数 10.16remove和rename函数 10.17符号链接 10.18解析可能包含符号链接的路径 10.18.1resolvepath函数 10.18.2realpath函数 10.19symlink和readlink函数 10.20文件时间 10.21改变文件的访问和修改时间 10.21.1utime函数 10.21.2utimes函数 10.22创建和移除目录 10.23读取目录 10.23.1opendir和fdopendir函数 10.23.2readdir和readdir_r函数 10.23.3seekdir、rewinddir和telldir函数 10.23.4closedir函数 10.23.5ftw和nftw函数 10.24chdir、fchdir和getcwd函数 10.25chroot和fchroot函数 10.26特殊文件 10.27sync和fsync函数 10.28综合讨论 10.29小结 练习 第11章使用文件系统 11.1引言 11.2磁盘术语 11.3已挂载的文件系统表 11.3.2hasmntopt函数 11.3.3resetmnttab函数 11.3.4putmntent函数 11.4mntfs文件系统ioctl命令 11.5文件系统默认值 11.5.1getvfsent系列函数 11.5.2添加项到/etc/vfstab 11.6挂载和卸载文件系统 11.6.1mount函数 11.6.2umount和umount2函数 11.7获得文件系统的状态 11.7.1statvfs和fstatvfs函数 11.7.2ustat函数 11.8读取文件系统数据结构 11.8.1超级块 11.8.2信息节点表 11.8.3柱面组 11.9总结 练习 第12章终端I/O 12.1引言 12.2终端I/O概述 12.3特殊的输入字符 12.4获得和设置终端属性 12.5终端选项标志 12.5.1stty命令 12.6波特率函数 12.7行控制函数 12.7.1tcdrain函数 12.7.2tcflow函数 12.7.3tcflush函数 12.7.4tcsendbreak函数 12.8终端标识 12.8.1ctermid和ctermid_r函数 12.8.2isatty函数 12.8.3ttyname和ttyname_r函数 12.9规范模式 12.10非规范模式 12.11终端窗口尺寸 12.12设备无关的终端控制 12.13小结 练习 第13章高级I/O 13.1引言 13.2非阻塞I/O 13.3记录锁定 13.4使用fcntl的记录锁定 13.5使用lockf的记录锁定 13.6死锁和活锁 13.7锁继承性和释放 13.8强制锁与建议锁的比较 13.9STREAMSI/O子系统 13.9.1isastream函数 13.10STREAMS消息 13.11putmsg和putpmsg函数 13.12getmsg和getpmsg函数 13.13STREAMSioctl操作 13.14使用read和write的STREAMSI/O 13.14.1从STREAMS设备中读取 13.4.2写入到STREAMS设备 13.15I/O多路复用 13.16select函数 13.17poll函数 13.18/dev/poll设备驱动程序 13.19异步I/O 13.20和STREAMS设备文件一起的异步I/O 13.21和其他文件一起的异步I/O 13.21.1aioread和aiowrite函数 13.21.2aiowait函数 13.21.3aiocancel函数 13.22readv和writev函数 13.23sendfile和sendfilev函数 13.23.1sendfile函数 13.23.2sendfilev函数 13.24内存映射的I/O 13.25mmap和munmap函数 13.26mprotect函数 13.27madvise函数 13.28msync函数 13.29在内存中锁定页面 13.29.1mlock和munlock函数 13.29.2mlockall和munlockall函数 13.29.3plock函数 13.30memcntl函数 13.31内存映射I/O的小结 13.32访问控制列表 13.33acl和facl函数 13.34aclfromtext和acltotext函数 13.35aclcheck函数 13.36aclfrommode和acltomode函数 13.37aclsort函数 13.38扩展的文件属性 13.39openat和attropen函数 13.40fstatat函数 13.41unlinkat函数 13.42renameat函数 13.43fchownat函数 13.44futimesat函数 13.45改变扩展属性文件权限 13.46小结 练习 第四部分进程和进程控制 第14章UNIX进程的环境 14.1引言 14.2进程启动 14.2.1main函数 14.3进程终止 14.3.1exit和_exit函数 14.3.2atexit函数 14.4命令行参数 14.4.1getexecname函数 14.5环境变量 14.5.1getenv函数 14.5.2putenv函数 14.6C程序的内存布局 14.6.1查找程序中最近的位置 14.7共享的对象 14.8内存分配 14.8.1sbrk函数 14.8.2brk函数 14.9setjmp和longjmp函数 14.9.1自动变量、寄存器变量和易变的变量 14.9.2_setjmp和_longjmp函数 14.9.3使用自动变量时的常见错误 14.10资源限制 14.11小结 练习 第15章进程控制 15.1引言 15.2进程标识符 15.2.1getpid函数 15.2.2getppid函数 15.3fork和forkl函数 15.3.1通过fork的文件共享 15.4vfork函数 15.5exit和_exit函数 15.6wait函数 15.7waitpid函数 15.8wait3和wait4函数 15.9waitid函数 15.10竞争条件 15.11exec函数 15.11.1execl函数 15.11.2execv函数 15.11.3execle函数 15.11.4execve函数 15.11.5execlp函数 15.11.6execvp函数 15.11.7exec函数的总结 15.12解释程序文件 15.13system函数 15.14进程记帐 15.15小结 练习 第16章进程关系 16.1引言 16.2终端登录 16.3网络登录 16.4进程组 16.4.1创建或连接进程组 16.5会话 16.5.1创建新的会话 16.6控制终端 16.7tcgetpgrp和tcsetpgrp函数 16.8tcgetsid函数 16.9作业控制 16.10程序的外壳执行 16.11孤立的进程组 16.12小结 练习 第17章信号 17.1引言 17.2信号概念 17.3signal函数 17.3.1进程启动 17.4不可靠的信号 17.5可靠的信号 17.6sigset函数 17.7pau |
商品评论(0条)