摘要: 概述 伪终端是指,对于一个应用程序,它看上去是一个终端,而实际上却并不是一个真正的终端。 父进程首先打开一个伪终端主设备,随后fork,子进程打开相应的伪终端从设备,并将该文件描述符复制到stdin/out/err,最后调用exec。 对于伪终端从设备上的用户进程来说,其stdin/out/err都 阅读全文
posted @ 2021-01-08 10:50 maxiaowei0216 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 本章主要介绍终端的相关概念,及一些修改终端操作的函数。 概念 工作模式 主要有以下两种工作模式: 规范模式(Canonical mode)输入处理。在此模式下,对于终端的输入以行为单位进行处理。每次读取最多返回一行。这是默认的模式。 非规范模式(Noncanonical mode)输入处理。输入字符 阅读全文
posted @ 2021-01-08 10:49 maxiaowei0216 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 本章主要介绍一些进程间通信的方式,如管道、消息队列、信号量和共享存储等。 管道 一般来说,管道是半双工的(即数据只能在一个方向上流动),并且只能在具有公共祖先的两个进程之间使用。通常,父进程创建管道后会接着调用fork,从而利用管道在父子进程之间通信。 之后,父子进程可以分别关闭管道的读/写端,以利 阅读全文
posted @ 2021-01-08 10:47 maxiaowei0216 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 本章主要介绍几种高级I/O功能,主要有非阻塞I/O、记录锁、I/O多路转接、异步I/O、readv/writev函数和存储映射I/O。 非阻塞I/O 某些系统调用可能会使进程永远阻塞,一般称其为低速系统调用。而使用非阻塞I/O,可以使open、read和write这类I/O操作不会阻塞,如果不能完成 阅读全文
posted @ 2021-01-08 10:46 maxiaowei0216 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 主要特点 一般在系统启动时装入,仅在系统关闭时终止。 大多数守护进程以超级用户特权运行。 所有的守护进程都没有控制终端,其终端名设置为问号。 内核守护进程以无控制终端方式启动。 用户层守护进程可以通过调用setsid实现。 用户层守护进程的父进程是init进程。 消息输出 前面提到,守护进程是没有控 阅读全文
posted @ 2021-01-08 10:44 maxiaowei0216 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 本章详细介绍了线程属性和同步原语属性。最后讨论基于进程的系统调用如何与线程进行交互。 属性 可以通过对每个对象关联的不同属性来细调线程和同步对象的行为。管理这些属性的函数大概有以下几类: 初始化函数,负责给属性设置为默认值 销毁函数,负责释放初始化函数分配的资源 获取属性值的函数 设置属性值的函数 阅读全文
posted @ 2021-01-08 10:43 maxiaowei0216 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 本章主要介绍线程的概念,创建和终止线程以及线程同步问题。 使用到的函数默认需要包含pthread.h头文件,且在使用gcc编译时,需要链接pthread库。 代码地址:https://gitee.com/maxiaowei/Linux/tree/master/apue 线程的创建与终止 创建线程 / 阅读全文
posted @ 2021-01-08 10:36 maxiaowei0216 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 数组与指针 在大部分情况下,数组和指针是可以互换的。书中的第4章主要讲解了数组和指针的不同之处,而在第9章则着重讨论两者可以互换的场景。 不同之处 对于两者的不同之处,主要在于访问两者时有一些不同。 编译器会为每个变量分配一个地址,每个符号的地址在编译时可知(如数组的名字)。那么在访问数组中的数据时 阅读全文
posted @ 2021-01-07 17:15 maxiaowei0216 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 段(P117-119) 在一个可执行文件中,主要有三个段:文本段、数据段和bss段。利用size命令,可以查看这三个段的大小。 编程挑战 size text data bss total 1 16696 1566 600 8 2174 2 16720 1566 600 4032 6198 3 207 阅读全文
posted @ 2021-01-07 17:14 maxiaowei0216 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 理解声明(P64-66) 面对一些复杂的声明形式,可以通过以下两种方法来理解,分别是优先级法和图标法。下面以书上的 char * const *(*next)(); 为例,分别进行分析。 优先级法(P64) 适用规则 解释 A 首先,看变量名next,并注意到它直接被括号所括住 B.1 所以先把括号 阅读全文
posted @ 2021-01-07 17:13 maxiaowei0216 阅读(379) 评论(0) 推荐(0) 编辑