系统编程
初闻
这个作者很懒,什么都没留下…
展开
-
进程间通信方式(四):System V 信号量
一、概念二、特点三、信号量数据结构 信号量具有自身特有的数据结构 semid_ds,该结构说明了信号量的一些状态信息等等,详细信息可参阅文件 /usr/include/linux/sem.h 。四、信号量相关函数1. semget【头文件】:#include <sys/ipc.h>、#include <sys/...原创 2019-10-24 23:16:34 · 560 阅读 · 1 评论 -
进程的全面解析
一、进程概念狭义定义在生活中,当我们打开某个软件的时候,其实就是将这个程序运行起来,这些程序运行起来都需要被加载到内存中去,而这每一个运行起来的程序就是一个进程,所以说进程是正在运行的程序的实例。广义定义进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统进行资源分配和调度的基本单位,是操作系统结构的基础。PCB(进程控制块)在操作系统中,进程的描述信息被放在一个...原创 2018-11-20 21:52:15 · 716 阅读 · 0 评论 -
辨析:僵尸进程与孤儿进程
一、僵尸进程1. 概念 处于僵尸状态的进程就是一个僵尸进程2. 产生原因 子进程先于父进程退出; 子进程退出为了保存自己的退出状态,因此退出后资源不会被完全释放。正常情况下,当操作系统检测到了子进程要退出时,会通过 SIGCHLD 信号通知父进程,让父进程去获取子进程的退...原创 2018-11-20 23:23:55 · 469 阅读 · 0 评论 -
详解:进程控制那些事儿
一、进程创建1. fork头文件:#include &amp;amp;amp;amp;amp;amp;amp;amp;lt;unistd.h&amp;amp;amp;amp;amp;amp;amp;amp;gt;函数原型:pid_t fork(void);说明:返回值:fork:父子进程分别有自己独立的地址空间,父子进程代码共享,数据独有子进程返回0,父进程返回的是子进程的PID反过来:子进程返回父进程的PID,父进程返回0,这是错误的从接口说起,原创 2018-11-29 00:40:57 · 312 阅读 · 0 评论 -
解析环境变量
一、概念&nbsp; &nbsp; &nbsp;一般是指在操作系统中用来指定操作系统运行环境的一些参数。它具有某些特殊用途,在操作系统中通常具有全局属性,并且可以被子进程继承下去。二、常见环境变量环境变量名称含义PATH指定命令的搜索路径HOME指定用户的主工作目录(即用户登录到Linux系统中时,默认的目录)HISTSIZE保存历史命令记录的条数...原创 2018-11-20 22:53:33 · 320 阅读 · 0 评论 -
Linux文件系统基础认识
一、概述 Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。 常见的文件系统类型有ext2、ext3、ext4、XFS和BTRFS,其中ext2为Linux的正统文件系统。二、文件系统存储结...原创 2019-07-26 11:49:20 · 397 阅读 · 0 评论 -
辨析:硬链接与符号链接
前言 我们都知道,在 Linux 文件系统中,每个文件都仅会占用一个 inode,文件的实际内容由 inode 的记录来指向。若想要读取该文件,则必须经过目录记录的文件名来找到对应的 inode 节点号。也就是说,文件名只与目录有关,而 inode 却与文件内容有关。所以可以认为,inode 才是文件的唯一标识而非文件名。一、硬链接(Har...原创 2019-07-27 11:56:16 · 1503 阅读 · 0 评论 -
进程间通信方式(一):管道
前言 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。一、概念 管道是 Unix 中最古老...原创 2019-08-13 20:13:19 · 736 阅读 · 0 评论 -
详解:管道的读写规则以及原子性问题
当管道空的时候O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来为止(默认)O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN【示例】:#include <stdio.h> ...原创 2019-08-13 20:19:14 · 2850 阅读 · 7 评论 -
详解:命名管道的打开规则
一、如果当前打开操作是为读而打开 FIFO 时1. 阻塞模式(默认)【示例】:【代码】:【执行结果】:【分析】:2. 非阻塞模式【示例】:【代码】:【执行结果】:【分析】:3. 总结模式结果阻塞模式(O_NONBLOCK disable)阻塞直到有相关进程为写而打开该 FIFO非阻塞模式(O_NONBLOCK enable)立刻返回成功二...原创 2019-08-13 20:22:27 · 2052 阅读 · 1 评论 -
进程间通信方式(二):System V 消息队列
一、概念 消息队列又叫做报文队列,可以认为它就是一个消息链表,链表中的每一个消息都看作是一个记录,具有特定的格式以及特定的优先级。消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法,并且每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据块。 对消息队列有写...原创 2019-09-06 11:40:11 · 512 阅读 · 0 评论 -
进程间通信方式(三):System V 共享内存
一、概念 我们都知道,在 Linux 中,每个进程都有属于自己的虚拟地址空间,并且还有一个与之对应的页表,负责将进程的虚拟地址与物理地址进行映射。倘若现在有两个不同的进程,它们各自的虚拟地址通过页表映射到了同一块物理空间,那么这块物理空间就叫做共享内存。 所以说,共享内存就是允许两个或...原创 2019-09-07 21:14:06 · 505 阅读 · 0 评论