logo
分类于: 计算机基础 互联网

简介

UNIX/Linux程序设计教程

UNIX/Linux程序设计教程 0.0分

资源最后更新于 2020-03-29 03:47:33

作者:赵克佳沈志宇

出版社:出版社机械工业出版社

出版日期:2012-12

ISBN:9787111403890

文件格式: pdf

标签: 网络 计算机 系统开发

简介· · · · · ·

本书遵循最新的“统一UNIX规范版本4”,以Linux为平台,系统地讲述了UNIX API各种函数的编程方法。本书内容包括UNIX的发展历程与标准、标准I/O和低级I/O、文件与目录操作、进程环境与进程控制、信号处理、时间与定时、终端I/O、高级I/O、进程之间的通信、套接字与网络通信、多线程编程。本书在介绍UNIX API各种函数的功能和用途的同时,清晰地阐述了它们所隐含的操作系统基本原理。书中给出了大量程序设计示例程序,有助于读者更好地掌握这些函数的功能、使用方法及编程技巧。作者:赵克佳,沈志宇
直接下载

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

  1. 前言
  2. 第1章 UNIX导论
  3. 1.1 UNIX简史
  4. 1.1.1 UNIX的诞生
  5. 1.1.2 UNIX的早期发展
  6. 1.1.3 BSD UNIX
  7. 1.1.4 系统V UNIX
  8. 1.1.5 UNIX的商业化
  9. 1.1.6 Linux
  10. 1.2 标准
  11. 1.2.1 SVID
  12. 1.2.2 POSIX
  13. 1.2.3 统一UNIX规范
  14. 1.2.4 C标准
  15. 1.3 UNIX基本概念
  16. 1.3.1 程序和进程
  17. 1.3.2 内核
  18. 1.3.3 shell
  19. 1.3.4 用户名与用户ID、用户组与组ID
  20. 1.3.5 特权用户
  21. 1.3.6 系统调用与库函数
  22. 1.4 系统库
  23. 1.4.1 头文件
  24. 1.4.2 保留字
  25. 1.4.3 特征测试宏
  26. 1.5 示例程序和编译环境
  27. 1.6 错误处理
  28. 1.7 系统信息
  29. 1.7.1 机器标识
  30. 1.7.2 硬件/软件类型识别
  31. 1.8 系统能力限制
  32. 1.8.1 一般能力限制值
  33. 1.8.2 系统和文件特征选项
  34. 1.8.3 sysconf()、pathconf()和fpathconf()函数
  35. 1.9 思考与练习
  36. 第2章 标准输入输出
  37. 2.1 UNIX输入输出基本概念
  38. 2.2 流和FILE对象
  39. 2.3 打开和关闭流
  40. 2.4 读和写流
  41. 2.4.1 字符I/O
  42. 2.4.2 行I/O
  43. 2.4.3 读回退
  44. 2.4.4 块I/O
  45. 2.5 文件定位
  46. 2.6 文件结束和错误指示器
  47. 2.7 流缓冲
  48. 2.8 格式I/O
  49. 2.8.1 格式输出
  50. 2.8.2 格式输入
  51. 2.9 临时文件
  52. 2.10 思考与练习
  53. 第3章 低级输入输出
  54. 3.1 文件描述字的打开、创建和关闭
  55. 3.2 read()和write()函数
  56. 3.3 设置描述字的文件位置
  57. 3.4 dup()和dup2()函数
  58. 3.5 fdopen()和fileno()函数
  59. 3.6 文件控制函数fcntl()
  60. 3.6.1 重复文件描述字
  61. 3.6.2 文件描述字标签
  62. 3.6.3 文件状态标签
  63. 3.7 非阻塞I/O
  64. 3.8 readv()和writev()函数
  65. 3.9 fsync()和fdatasync()函数
  66. 3.10 思考与练习
  67. 第4章 文件与目录
  68. 4.1 文件
  69. 4.1.1 stat()、fstat()和lstat()函数
  70. 4.2 文件类型
  71. 4.2.1 普通文件
  72. 4.2.2 目录
  73. 4.2.3 链接与link()函数
  74. 4.2.4 符号链接与symlink()和readlink()函数
  75. 4.2.5 特别文件
  76. 4.2.6 测试文件的类型
  77. 4.3 文件的属主和用户组
  78. 4.3.1 chown()、fchown()和lchown()函数
  79. 4.4 文件方式
  80. 4.4.1 文件访问权限
  81. 4.4.2 调整用户ID和调整组ID
  82. 4.4.3 sticky位
  83. 4.4.4 文件方式位小结
  84. 4.5 确定和改变文件方式
  85. 4.5.1 umask()函数
  86. 4.5.2 chmod()和fchmod()函数
  87. 4.5.3 access()函数
  88. 4.6 文件大小
  89. 4.6.1 截断文件
  90. 4.7 文件时间
  91. 4.7.1 utime()和utimes()函数
  92. 4.8 文件的删除与换名
  93. 4.8.1 删除文件和目录
  94. 4.8.2 文件换名
  95. 4.9 目录操作
  96. 4.9.1 工作目录
  97. 4.9.2 创建目录
  98. 4.9.3 读目录流
  99. 4.9.4 对目录流的随机访问
  100. 4.10 思考与练习
  101. 第5章 进程环境
  102. 5.1 main()函数
  103. 5.2 命令行参数
  104. 5.2.1 命令行参数的语法约定
  105. 5.2.2 扫描命令行中的选项
  106. 5.3 环境变量
  107. 5.3.1 环境表
  108. 5.3.2 访问环境
  109. 5.4 终止进程
  110. 5.4.1 出口状态
  111. 5.4.2 终止前的清理
  112. 5.4.3 流产程序
  113. 5.5 进程的存储空间
  114. 5.5.1 进程的地址空间
  115. 5.5.2 动态存储分配与释放
  116. 5.5.3 释放分配的存储单元
  117. 5.6 setjmp()和longjmp()函数
  118. 5.7 进程资源
  119. 5.7.1 查看与设置资源限制
  120. 5.7.2 资源使用统计
  121. 5.8 用户信息
  122. 5.8.1 用户名
  123. 5.8.2 用户数据库
  124. 5.8.3 组数据库
  125. 5.9 进程的身份凭证
  126. 5.10 调整进程的身份
  127. 5.11 思考与练习
  128. 第6章 进程控制
  129. 6.1 进程标识
  130. 6.2 进程创建
  131. 6.3 执行一个新程序
  132. 6.4 等待进程完成
  133. 6.5 进程终止与僵死进程
  134. 6.6 system()函数
  135. 6.7 进程组
  136. 6.8 会晤期
  137. 6.9 控制终端
  138. 6.10 作业控制
  139. 6.11 思考与练习
  140. 第7章 信号处理
  141. 7.1 信号概念
  142. 7.2 UNIX信号
  143. 7.2.1 程序错误类信号
  144. 7.2.2 程序中止类信号
  145. 7.2.3 闹钟类信号
  146. 7.2.4 I/O类信号
  147. 7.2.5 作业控制类信号
  148. 7.2.6 操作错误类信号
  149. 7.2.7 其他信号
  150. 7.3 生成信号
  151. 7.3.1 raise()函数
  152. 7.3.2 kill()函数
  153. 7.4 设置信号的动作
  154. 7.4.1 signal()函数
  155. 7.4.2 进程初启时的信号动作
  156. 7.4.3 不可靠信号
  157. 7.4.4 sigaction()函数
  158. 7.5 信号句柄
  159. 7.5.1 正常返回的信号句柄
  160. 7.5.2 终止进程的句柄
  161. 7.6 阻塞信号
  162. 7.6.1 sigset_t类型和信号集操作
  163. 7.6.2 设置信号屏蔽
  164. 7.6.3 检查悬挂信号
  165. 7.7 等待信号
  166. 7.7.1 pause()函数
  167. 7.7.2 sigsuspend()函数
  168. 7.8 使用分开的信号栈
  169. 7.9 信号句柄编程技巧
  170. 7.9.1 句柄内非局部控制转移
  171. 7.9.2 可重入函数与异步信号安全函数
  172. 7.9.3 被信号中断的系统调用
  173. 7.9.4 原子数据
  174. 7.10 实时信号
  175. 7.10.1 SA_SIGINFO标志
  176. 7.10.2 发送实时信号
  177. 7.10.3 等待实时信号
  178. 7.11 思考与练习
  179. 第8章 时间与定时
  180. 8.1 系统时钟
  181. 8.1.1 time()函数
  182. 8.1.2 gettimeofday()函数
  183. 8.2 时间格式转换
  184. 8.2.1 分解的日历时间
  185. 8.2.2 格式化日期与时间
  186. 8.3 CPU时间与墙钟时间
  187. 8.3.1 clock()函数
  188. 8.3.2 times()函数
  189. 8.4 睡眠与定时
  190. 8.4.1 sleep()函数
  191. 8.4.2 设置定时器
  192. 8.5 实时时钟与定时
  193. 8.5.1 实时时钟
  194. 8.5.2 实时睡眠
  195. 8.5.3 实时定时器
  196. 8.5.4 创建和删除实时定时器
  197. 8.5.5 设置实时定时器
  198. 8.5.6 定时器超期计数
  199. 8.6 思考与练习
  200. 第9章 终端I/O
  201. 9.1 需要改变终端设置的例子
  202. 9.2 终端I/O概述
  203. 9.2.1 终端
  204. 9.2.2 串行端口
  205. 9.2.3 终端设备文件
  206. 9.2.4 输入输出队列
  207. 9.2.5 加工和非加工输入方式
  208. 9.3 GTI控制接口
  209. 9.3.1 termios数据结构
  210. 9.3.2 GTI控制函数
  211. 9.4 终端属性
  212. 9.4.1 输入方式
  213. 9.4.2 输出方式
  214. 9.4.3 控制方式
  215. 9.4.4 局部方式
  216. 9.4.5 特殊字符
  217. 9.4.6 stty命令
  218. 9.5 终端标识
  219. 9.6 改变终端属性
  220. 9.7 加工方式与非加工方式输入
  221. 9.7.1 加工方式输入
  222. 9.7.2 非加工方式输入
  223. 9.8 设置波特率
  224. 9.9 行控制函数
  225. 9.10 串行端口程序设计
  226. 9.11 思考与练习
  227. 第10章 高级I/O
  228. 10.1 文件锁
  229. 10.1.1 fcntl()文件锁操作
  230. 10.1.2 锁的测试、请求和释放
  231. 10.1.3 文件锁与进程和文件的关系
  232. 10.1.4 死锁
  233. 10.1.5 建议锁与强制锁
  234. 10.2 信号驱动的I/O
  235. 10.3 多路转接I/O
  236. 10.3.1 select()函数
  237. 10.3.2 poll()函数
  238. 10.4 异步I/O
  239. 10.4.1 异步I/O控制块
  240. 10.4.2 I/O完成时的信号交付
  241. 10.4.3 异步I/O的优先级
  242. 10.4.4 异步I/O函数
  243. 10.4.5 异步I/O之例
  244. 10.4.6 异步I/O注意事项
  245. 10.5 存储映射I/O
  246. 10.6 思考与练习
  247. 第11章 进程间通信
  248. 11.1 管道
  249. 11.1.1 创建管道
  250. 11.1.2 父子进程间的管道通信
  251. 11.1.3 连接标准输入和标准输出的管道
  252. 11.1.4 popen()和pclose()函数
  253. 11.1.5 管道I/O的原子性
  254. 11.2 FIFO特别文件
  255. 11.2.1 创建FIFO
  256. 11.2.2 FIFO操作
  257. 11.2.3 FIFO用于客户/服务通信
  258. 11.3 系统V IPC
  259. 11.3.1 关键字和标识
  260. 11.3.2 IPC资源描述结构与成员ipc_perm
  261. 11.3.3 ipcs和ipcrm命令
  262. 11.4 消息队列
  263. 11.4.1 创建和获得消息队列
  264. 11.4.2 消息队列的查询、设置和删除
  265. 11.4.3 发送和接收消息
  266. 11.5 共享存储段
  267. 11.5.1 创建和获得共享存储段
  268. 11.5.2 共享存储段的查询、设置和删除
  269. 11.5.3 共享存储段的连接和分离
  270. 11.6 信号量
  271. 11.6.1 创建和获得信号量标识
  272. 11.6.2 信号量的查询、设置和删除
  273. 11.6.3 信号量操作
  274. 11.7 思考与练习
  275. 第12章 套接字与网络通信
  276. 12.1 TCP/IP协议
  277. 12.2 套接字
  278. 12.3 套接字地址结构
  279. 12.3.1 IP地址
  280. 12.3.2 域名地址
  281. 12.3.3 服务与端口号
  282. 12.3.4 套接字地址数据结构
  283. 12.3.5 字节顺序
  284. 12.4 命名套接字
  285. 12.5 套接字通信模式
  286. 12.6 流套接字操作
  287. 12.6.1 请求连接
  288. 12.6.2 接收连接
  289. 12.6.3 getsockname()和getpeername()函数
  290. 12.6.4 多客户服务
  291. 12.6.5 send()和recv()函数
  292. 12.7 套接字选项
  293. 12.8 带外数据
  294. 12.8.1 TCP带外数据
  295. 12.8.2 带外数据的发送和接收
  296. 12.8.3 带外数据标志
  297. 12.9 数据报套接字操作
  298. 12.9.1 sendto()和recvfrom()函数
  299. 12.9.2 数据报套接字客户/服务之例
  300. 12.9.3 使用connect()函数
  301. 12.10 超时处理
  302. 12.11 思考与练习
  303. 第13章 线程
  304. 13.1 线程概念
  305. 13.1.1 什么是线程
  306. 13.1.2 线程的好处
  307. 13.1.3 Pthreads线程
  308. 13.1.4 线程标识
  309. 13.2 创建线程
  310. 13.3 终止线程
  311. 13.3.1 等待线程终止
  312. 13.3.2 可汇合与分离的线程
  313. 13.4 创建特殊属性的线程
  314. 13.5 互斥变量
  315. 13.5.1 互斥变量的初始化和销毁
  316. 13.5.2 互斥变量属性
  317. 13.5.3 互斥变量的加锁与解锁
  318. 13.5.4 互斥变量与spin锁
  319. 13.6 读写锁
  320. 13.6.1 读写锁的初始化和销毁
  321. 13.6.2 读写锁的上锁与解锁
  322. 13.7 条件变量
  323. 13.7.1 创建和销毁条件变量
  324. 13.7.2 条件变量属性
  325. 13.7.3 等待条件变量
  326. 13.7.4 唤醒条件变量等待
  327. 13.8 思考与练习
  328. 第14章 线程高级特征
  329. 14.1 线程专有数据
  330. 14.1.1 线程专有数据键的创建和删除
  331. 14.1.2 使用线程专有数据
  332. 14.2 取消线程
  333. 14.2.1 线程的可取消属性
  334. 14.2.2 取消线程与取消点
  335. 14.2.3 异步取消的安全性
  336. 14.2.4 现场清理
  337. 14.3 线程调度
  338. 14.3.1 线程调度竞争范围
  339. 14.3.2 调度策略与优先级
  340. 14.3.3 线程调度属性
  341. 14.3.4 动态改变线程的调度策略和优先级
  342. 14.4 线程与信号
  343. 14.4.1 信号动作
  344. 14.4.2 信号屏蔽
  345. 14.4.3 向线程发送信号
  346. 14.4.4 等待信号
  347. 14.4.5 一种新的事件通知方法:SIGEV_THREAD
  348. 14.5 思考与练习
  349. 参考文献