摘要:
概述 伪终端是指,对于一个应用程序,它看上去是一个终端,而实际上却并不是一个真正的终端。 父进程首先打开一个伪终端主设备,随后fork,子进程打开相应的伪终端从设备,并将该文件描述符复制到stdin/out/err,最后调用exec。 对于伪终端从设备上的用户进程来说,其stdin/out/err都 阅读全文
摘要:
本章主要介绍终端的相关概念,及一些修改终端操作的函数。 概念 工作模式 主要有以下两种工作模式: 规范模式(Canonical mode)输入处理。在此模式下,对于终端的输入以行为单位进行处理。每次读取最多返回一行。这是默认的模式。 非规范模式(Noncanonical mode)输入处理。输入字符 阅读全文
摘要:
本章主要介绍一些进程间通信的方式,如管道、消息队列、信号量和共享存储等。 管道 一般来说,管道是半双工的(即数据只能在一个方向上流动),并且只能在具有公共祖先的两个进程之间使用。通常,父进程创建管道后会接着调用fork,从而利用管道在父子进程之间通信。 之后,父子进程可以分别关闭管道的读/写端,以利 阅读全文
摘要:
本章主要介绍几种高级I/O功能,主要有非阻塞I/O、记录锁、I/O多路转接、异步I/O、readv/writev函数和存储映射I/O。 非阻塞I/O 某些系统调用可能会使进程永远阻塞,一般称其为低速系统调用。而使用非阻塞I/O,可以使open、read和write这类I/O操作不会阻塞,如果不能完成 阅读全文
摘要:
主要特点 一般在系统启动时装入,仅在系统关闭时终止。 大多数守护进程以超级用户特权运行。 所有的守护进程都没有控制终端,其终端名设置为问号。 内核守护进程以无控制终端方式启动。 用户层守护进程可以通过调用setsid实现。 用户层守护进程的父进程是init进程。 消息输出 前面提到,守护进程是没有控 阅读全文
摘要:
本章详细介绍了线程属性和同步原语属性。最后讨论基于进程的系统调用如何与线程进行交互。 属性 可以通过对每个对象关联的不同属性来细调线程和同步对象的行为。管理这些属性的函数大概有以下几类: 初始化函数,负责给属性设置为默认值 销毁函数,负责释放初始化函数分配的资源 获取属性值的函数 设置属性值的函数 阅读全文
摘要:
本章主要介绍线程的概念,创建和终止线程以及线程同步问题。 使用到的函数默认需要包含pthread.h头文件,且在使用gcc编译时,需要链接pthread库。 代码地址:https://gitee.com/maxiaowei/Linux/tree/master/apue 线程的创建与终止 创建线程 / 阅读全文