
APUE读书笔记
文章平均质量分 85
APUE读书笔记,便于复习
干干干就完了
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设置用户ID和设置组ID,文件访问权限,新文件和目录的所有权
文章目录设置用户ID和设置组ID文件访问权限新文件和目录的所有权 设置用户ID和设置组ID 与一个进程相关联的ID有6个或更多。 实际用户ID和实际组ID标识我们是谁。这两个字段在登陆时取自口令文件中的登陆项。 有效用户ID,有效组ID以及附属组ID决定了我们的文件访问权限。 保存的设置用户ID和保存的设置组ID在执行一个程序时包含了有效用户ID和有效组ID的副本。 通常,有效用户ID等于实际用户ID,有效组ID等于实际组ID。 当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,有效组ID原创 2021-07-28 11:33:42 · 725 阅读 · 0 评论 -
文件描述符和打开文件之间的关系,文件描述符与exec()
文章目录文件描述符和打开文件之间的关系文件描述符与exec() 文件描述符和打开文件之间的关系 多个文件描述符指向同一打开文件。这些文件描述符可在相同或不同的进程中打开。 内核维护的3个数据结构 进程级的文件描述符表 系统级的打开文件表 文件系统的i-node表 针对每个进程,内核为其维护打开文件的文件描述符表。该表的每一条目都记录了单个文件描述符的相关信息,如下所示: 控制文件描述符操作的一组标志。 对打开文件句柄的引用。 内核对所有打开的文件维护有一个系统级的描述表格。也称之为打开文件表,并将表原创 2021-07-13 16:22:36 · 976 阅读 · 0 评论 -
缓冲——读书笔记
缓冲 标准I/O提供了以下3种类型的缓冲。 全缓冲。在这种情况下,在填满标准I/O缓冲区后才进行实际的IO操作。对于驻留在磁盘上的文件通常是由标准I/O库实施全缓冲的。术语**冲洗flush**说明标准I/O缓冲区的写操作。缓冲区可由标准I/O例程自动地冲洗,或者可以调用函数flush冲洗一个流。 行缓冲。在这种情况下,当在输入和输出中遇到换行符时,标准I/O库执行I/O操作。当流涉及一个终端时(如标准输入和标准输出),通常使用行缓冲。对于行缓冲有两个限制,第一,因为标准I/O库用来收集每一行的缓冲区的长原创 2021-07-13 12:11:49 · 121 阅读 · 0 评论 -
进程间通信
进程间通信 管道 管道有以下两种局限性。 历史上,它们是半双工的(即数据只能在一个方向上流动)。现在,某些系统提供全双工管道,但是为了最佳的可移植性,我们绝不应该预先假定系统支持全双工管道。 管道只能在具有公共祖先的两个进程之间使用。通常,一个管道由一个进程创建,在进程调用fork之后,这个管道就能在父进程和子进程之间使用了。 FIFO没有第二种局限性,UNIX域套接字没有这两种局限性。 尽管有这两种局限性,半双工管道仍然是最常用的IPC形式。每当在管道中键入一个命令序列,让shell执行时,shell原创 2021-07-13 11:23:14 · 483 阅读 · 0 评论 -
线程控制——读书笔记
线程属性 pthread接口允许我们通过设置每个对象关联的不同属性来细调线程和同步对象的行为。 每个对象与它自己类型的属性对象进行关联(线程和线程属性关联,互斥量与互斥量属性关联等等)。一个属性对象可以代表多个属性。属性对象对应用程序来说是不透明的。 有一个初始化函数,把属性设置为默认值。 有一个销毁属性对象的函数。如果初始化函数分配了与属性对象关联的资源,销毁函数负责释放这些资源。 每个属性都有一个从属性对象中获取属性值的函数。由于函数成功时会返回0,失败时会返回错误编号,所以可以通过把属性值存储在函数原创 2021-07-11 10:59:50 · 1008 阅读 · 0 评论 -
线程——读书笔记
线程概念 典型的UNIX进程可以看成只有一个控制线程:一个进程在某一时刻只能做一件事情。有了多个控制线程之后,在程序设计时就可以把进程设计成在某一时刻能够做不止一件事,每个线程处理各自独立的任务。这种方法有很多好处。 通过为每种事件类型分配单独的处理线程,可以简化处理异步事件的代码。每个线程在进行事件处理时可以采用同步编程模式,同步编程模式比异步编程模式简单。 多个进程必须使用操作系统提供的复杂机制才能实现内存和文件描述符的共享。多个线程自动地可以访问相同的存储地址空间和文件描述符。 有些问题可以分解从而原创 2021-07-09 17:23:34 · 200 阅读 · 0 评论 -
信号——读书笔记
信号 信号是软件中断。信号提供了一种处理异步事件的方法。 信号是异步事件的经典实例。产生信号的事件对进程而言是随机出现的。进程不能简单得测试一个变量来判断是否发生了一个信号,而是必须告诉内核“在此信号发生时,请执行下列动作” 在某个信号出现时,可以告诉内核按下列3中方法之一进行处理,我们称之为信号的处理或与信号相关的动作。 忽略此信号。多数信号都可使用这种方式进行处理,但有两种信号却绝不能被忽略,它们是SIGKILL和SIGSTOP。这两个信号不能忽略的原因是:它们向内核和超级用户提供了使进程终止或停止的原创 2021-07-08 10:39:49 · 718 阅读 · 1 评论