• 导读


     

     

    second edition 中的新内容。

    second edition 出版于 2005年,因为“the first edition of this book was published before Linux and the several open-source renditions of the Unix interface that stemmed from the Berkeley CSRG became widespread, and also at a time when many people's networking consisted of a serial modem.”
    书中对针对新的标准化的接口的实现做了改进。

    Chapter 1. UNIX System Overview unix 系统概述
    1.7. Error Handling 
    目标:会使用 errno, perr(), strerr()获取错误编号和错误描述。

     

    Chapter 2. UNIX Standardization and Implementations  unix 标准和实现
    跨平台的问题,编译时错误。这一章的知识正是为这些难题准备的。应该全部浏览一遍,这样才能在遇到问题的时候知道究竟是什么问题。
    目标:了解 unix 的 两个流派: v系列和 bsd系列的流变。了解 hu-ux、 sunos、 aix、 linux 各属于哪个流派。
    了解 ansiC 标准、 posix.1标准、ISO 1999标准。了解怎样获取编译/运行时的系统限制。


    Chapter 3. File I/O
    理解全章的内容。
    这是系统最底层的 读写操作。具有简单、效率低、通用性好、安全等特点。
    文件的打开、关闭、读写、加锁、属性设置。chapter 13.5 中的进程锁便是这些函数的应用。设置 socket属性时也会用到这些功能。
    在信号处理函数中,有时候要用到这些读写操作。因为它们是安全的、可重入的。
    目标:能对文件进行打开、关闭、读写、加锁、释放。会使用 fcntl()、ioctl()对文件属性进行操作。

    chapter 4和 chapter 5中,的内容。我们现在一般使用 c++ 中的 流对象来完成这些操作。现在不需要太关注这些细节了。
    需要注意的是,流操作不是在所有的系统
    目标:会使用  snprintf()、sprintf()函数进行字串操作。会使用 chdir()、 fchdir()、getcwd()来获取、操作进程目录属性。
    会使用  fileno()获取流文件的描述符。

    Chapter 6. System Data Files and Information
    6.10. Time and Date Routines 介绍了怎样获取系统时间。
    目标:能够获取系统当前日期、时间.精确到微秒.

    Chapter 7. Process Environment
     原理性的东东。讲得比较基础。简单通读一下。
      7.4. Command-Line Arguments 我们接口程序主控进程使用了Command-Line Arguments 来实现启动(start)、停止(stop)和状态查询(query)。
    7.9. Environment Variables 获取进程的环境变量
    目标:理解 c程序的内存布局。会使用命令行参数实现程序的流程控制。


    Chapter 8. Process Control


    8.2. Process Identifiers 描述了怎样获得进程的 进程 id ,进程组 id,用户 id等信息。 对进程发送信号时,需要这些背景知识。
    8.3. fork Function  fork()是unix 下几乎唯一的创建新进程的方法。其“一次调用,两次返回”会让初学者不知所云。使用fork()特别要理解父子进程间堆栈、文件句柄、文件描述符、信号钩子、信号集方面的共享情况。
    8.5. exit Functions 我们没有用。但这是很重要的函数。用于在程序退出时释放资源。

    目标:fork()、atexit(), getuid() ,getuid(),getppid() 的使用。会使用 fork()创建新进程。能够获得程序的pid,进程组id.会使用 ateixt()函数在程序退出前安全释放全局对象使用的资源(如数据库连接、网络连接等).


    Chapter 9. Process Relationships
    9.4. Process Groups  进程组。用来识别一组进程,从而实现合适的进程集的控制。发送信号时要用到这方面的知识。
    9.5. Sessions 会话期。创建精灵进程时会涉及这个概念。

    目标:了解进程组、会话期的概念。了解孤儿进程(精灵进程)的进程组属性、会话期属性、终端属性。

    Chapter 10. Signals

    10.2. Signal Concepts 对信号的解释。即使用 kill -l 命令列出的那些信号。
    10.9. kill and raise Functions   向进程发送信号
    10.10. alarm and pause Functions 定时唤醒进程。阻塞模式下,一定要使用此函数对程序定时唤醒。
    10.14. sigaction Function       信号钩子。
    其实本章节 1-11节的内容都非常重要。因为使用信号时常常会遇到莫名其妙的问题,如捕捉不到信号,捕捉到很多信号,信号函数执行时发生异常等。这需要对信号的机制有深入的了解。

    目标:理解可靠信号、重入、中断系统调用,理解信号的处理流程。会使用 kill() 和 raise()向进程发送信号。会使用 sigaction捕捉信号并进行处理、传递。会使用alarm()、pause()、 sleep()、对进程进行定时、超时控制。


    Chapter 11. Threads Chapter 12. Thread Control

    这两章是第二版中新加的,我还没看。


    Chapter 13. Daemon Processes
    13.5. Single-Instance Daemons 提供了使用文件锁来保证程序只启动一个实例。ocs接口程序实现了此应用的 c++版本。这种文件锁叫做“建议锁(协商锁,Advisory
     locks)”。


    14.5. I/O Multiplexing
    14.5.1. select and pselect Functions 
    select(),叫做“多路转接”或“多路复用”(Multiplexing)。我们的socket接口程序使用的是"阻塞(block)+ 多路转接"。

    目标:掌握 select()的使用。


    Chapter 15. Interprocess Communication 进程间通信
    Section 15.8.  Semaphores  信号量。对共享内存中的数据访问时,需要用信号量实现互斥操作。
    Section 15.9.  Shared Memory 共享内存。进程间共享数据最有效的方式。多纯种模式下,

    目标:申请、挂接、读写、脱离、释放信号量和共享内存。


    Chapter 16. Network IPC: Sockets
    第 1-6节,读得越仔细越好。我们就是靠这个吃饭的。
    目标: 理解 字节序(big-endian/little-endian )的概念和 网络字节序、本地字节序的转换。识别本机的字节序。

    Chapter 17. Advanced IPC
    17.4.Passing File Descriptors 介绍了怎样在不同的进程间传递文件描述符。17.4.1用于支流 stream 的 unix系统, 17.4.2用于不支持 stream的unix 系统/liunx系统。在多路复用技术中,要用到此知识。


    目标:理解、运用书中实现的  send_fd 和 recv_fd


    范晨鹏
    ------------------
    软件是一种态度
    成功是一种习惯


  • 相关阅读:
    0x00 mysql 的安装,简单mysql命令的使用
    nuxt中定制iview主题颜色
    获取浏览器语言的解决方案
    nuxt页面切换效果
    MySQL(非sql sever)安全体系的学习心得
    My SQL日志 学习心得
    楼梯在SQL Server事务日志管理,三级:事务日志,备份和恢复(16周翻译)
    SQL Server事务日志管理的阶段,1级:事务日志概述
    楼梯在SQL Server事务日志管理,一级:事务日志的概述(15周翻译)
    数据库的独立子查询以及数据的删除、更新和建立视图的笔记
  • 原文地址:https://www.cnblogs.com/diylab/p/1304640.html
Copyright © 2020-2023  润新知