Linux系统编程
文章平均质量分 96
在本专栏中将学习Linux系统编程。其中理论居多,其次实践前半部分将采用C编程,后半部分用C++编程。我们在学学习中,不会死磕一个理论,直至明白;而是循序渐进的,解决了新问题的同时,再引入新问题。
跳动的bit
这个作者很懒,什么都没留下…
展开
-
【Linux系统编程:线程】 线程控制 -- 创建、终止、等待、分离 | 线程互斥与同步 | 互斥量与条件变量 | 生产者消费者模型 | 线程池 | STL/智能指针与线程安全 | 读者写者模型
本文重点:基本上很多操作系统的书上对线程的解释是:线程是进程的一个执行分支,是在进程内部运行的一个执行流。而到具体一款操作系统,我们将从是什么、为什么、怎么办三个角度来解释线程。我们先来谈线程是什么的问题?对于上图,我们当然很熟悉,现在就可以明确了,这里是一张用户级页表,内核页表就不画了,我们都知道可执行程序在磁盘中无非就是代码或数据,更准确点表述,代码也是一种数据,程序一运行,实际就会将其加载到物理内存,因为每个进程都有地址空间和页表,所以可以通过用户页表映射物理内存的方式,来找到磁盘或内存中的数据。当然原创 2023-12-07 13:51:29 · 2426 阅读 · 44 评论 -
【Linux系统编程:信号】产生信号 | 阻塞信号 | 处理信号 | 可重入函数 | volatile | SIGCHLD
通过学习信号可以理解进程与进程的一个相对关系,还能理解操作系统与进程的关系。要注意的是进程间通信中的信号量与这里的信号没有半毛钱关系,就像老婆和老婆饼。掌握 Linux 信号的基本概念掌握信号产生的一般方式理解信号递达和阻塞的概念,原理掌握信号捕捉的一般方式重新了解可重入函数的概念了解竞态条件的情景和处理方式了解SIGCHLD信号, 重新编写信号处理函数的一般处理机制。原创 2023-10-24 20:07:02 · 669 阅读 · 29 评论 -
【Linux系统编程:进程间通信】匿名管道 pipe | 命名管道 fifo | system V --- 共享内存 shmget & shmctl & shmat & shmdt,消息队列,信号量
在日常生活中,通信的本质是传递信息,但具体在程序员角度,通信的本质是传递数据。进程间通信就是进程之间互相传递数据,那么进程间能直接相互传递数据吗?—— 不能,因为进程具有独立性,所有的数据操作,都会发生写时拷贝。父子进程都不能传递,更别谈两个进程毫无关系。所以两个进程要通信一定要通过中间媒介的方式来进行通信,所以必须先想办法让不同的进程看到同一份公共的资源,这里所谓的公共的资源就是系统通过某种方式提供的系统内存。原创 2023-10-12 19:49:24 · 564 阅读 · 14 评论 -
【Linux系统编程:基础IO 下】dup2 实现输出重定向、输入重定向、追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接|制作打包与使用动静态库
这里先接着《基础IO 上》中的缓冲区的内容作些补充,这里主要补充 dup2 接口。close(1);return 1;return 0;}close 1 后,1 就不再表示显示器文件,而 open log.txt 后,1 就表示 log.txt 文件,所以 fprintf 并不会往显示器上输出,而是会往 log.txt 里输出,可是 log.txt 中没有内容。...原创 2022-08-07 08:10:32 · 3068 阅读 · 31 评论 -
【Linux系统编程:基础IO 上】简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理
关于进程,我们还要再往下学习进程间通信、进程信号,但是在这之前,我们先学习基础IO,这篇文章穿插在进程中并不奇怪,因为它有着承上启下的作用。文件的宏观理解那么文件在哪呢?——广义上理解,键盘、显示器等都是文件,因为我们说过“Linux下,一切皆文件”,当然我们现在对于这句话的理解是片面的;狭义上理解,文件在磁盘上,磁盘是一种永久存储介质,不会受断电的影响,磁盘也是外设之一,所以对文件的所有操作,都是对外设的输入输出,简称IO(Input、Output)。文件的组成。.........原创 2022-07-20 08:43:56 · 1721 阅读 · 34 评论 -
【Linux进程控制】进程创建 | 进程终止 | 进程等待 | 进程替换
本文主要学习理解 fork 的返回值、写时拷贝的工作细节、为什么要存在写时拷贝;进程退出码、进程退出的场景及常见的退出方法、对比 man 2 _exit 和 man 3 exit;进程终止、操作系统怎么进行释放资源、池的概念;进程等待的价值、进程等待的方法 wait 和 waitpid(常用)、int* status、阻塞和非阻塞、如何理解等待、WIFEXITED、WEXITSTATUS、WTERMSIG;什么是进程替换 && 为什么要进程替换、替换原理、7个exec系列的替换函数、模拟shell解释器;原创 2022-06-17 10:00:00 · 2455 阅读 · 56 评论 -
【Linux进程概念——下】验证进程地址空间的基本排布 | 理解进程地址空间 | 进程地址空间如何映射至物理内存(页表的引出) | 为什么要存在进程地址空间 | Linux2.6内核进程调度队列
文章目录【写在前面】一、程序地址空间二、进程地址空间三、【写在前面】一、程序地址空间这个概念比较重要,之前我们也涉及过 —— 我们在语言上定义的各种变量等在内存中的分布情况,如果没有听说过,那么你的 C/C++ 是不可能学好的。其实对于这块,我们一直是有误区的。二、进程地址空间三、...原创 2022-05-30 08:07:22 · 1224 阅读 · 38 评论 -
【Linux环境变量与命令行参数】常见环境变量 | 环境变量的全局属性 | 命令行参数
对于环境变量,主要介绍基本概念及三四个环境变量 —— PATH、HOME、SHELL、HISTSIZE,其中 PATH 作为 “ 敲门砖 ”,我们会更详细讲解;理解环境变量的全局属性 —— 环境变量是可以被子进程继承(注意区分 C++ 里的继承);环境变量的组织方式。其次会介绍命令行参数 —— main 函数的参数。注意学习了本文的知识,并不代表己经掌握了环境变量,因为还有很多关于环境变量使用的技巧及常见的环境变量没有过多的介绍,后面有需要用到环境变量的地方在展开。原创 2022-05-17 09:52:18 · 2092 阅读 · 33 评论 -
【Linux进程概念——上】冯 • 诺依曼体系结构 | 操作系统 | 进程 | fork | 进程状态 | 优先级
从此篇开始,就开始学习 Linux 系统部分 —— 进程,在正式学习 Linux 进程之前,我们需要铺垫一些概念,如冯诺依曼体系结构、操作系统的概念及定位、进程概念,我们会先铺垫理论,再验证理论。其次对于某些需要深入的概念我们只是先了解下。本文中的 fork 只会介绍基本使用,以及解答 fork 为啥会有 2 个返回值、为啥给子进程返回 0,而父进程返回子进程的 pid;而对于用于接收 fork 返回值的 ret 是怎么做到 ret == 0 && ret > 0、写时拷贝、代码是怎么做到共享的、数据是怎么原创 2022-05-17 16:16:57 · 3936 阅读 · 66 评论 -
【Linux工具】:软件包管理器yum | 编辑器vim | 编译器gcc/g++ | 调试器gdb | 自动化构建工具make/Makefile | Linux小程序:进度条 | git命令行
我们学习 Linux 主要是在上面做开发的 —— 写代码、编译代码、调试代码、自动化构建项目、上传 github/gitee。在这里我们一共会介绍 5 - 6 个工具 —— 软件包管理器 yum、文本编译器 vim、代码编译器 gcc/g++、调试器 gdb、自动化构建项目 make/Makefile、以及 Linux 上的 git 的命令行。......原创 2022-04-12 10:05:39 · 2529 阅读 · 9 评论 -
【Linux权限】Shell命令及运行原理 | Linux权限管理 | 粘滞位
Linux 严格意义上说的是一个操作系统,我们称之为核心 (kernel),也就是内核,但是一般用户,不能直接使用 kernel,而是通过 kernel 的外壳程序,也就是所谓的 shell 来与 kernel 沟通。原创 2022-02-22 10:13:35 · 4195 阅读 · 40 评论 -
【Linux基本指令】os概念及定位 | 基本指令 | 热键
这里不会把所有的指令及选项在入门阶段全部讲出来,当然也不可能全部记住。大量的实例证明一开始死记的人大多数多记不住,这里只讲一些指令的基本功能和一些重要的选项,其余的以后遇到了再实践。在讲每条指令时其中会穿插一些别的概念,其次这里会大概了解下 os 。原创 2022-02-19 09:49:25 · 5323 阅读 · 19 评论 -
Linux入门篇
一、Linux 背景介绍???? 发展史???? 开源???? 官网???? 企业应用现状???? 发行版本二、搭建 Linux 环境???? Linux 环境的搭建方式???? 购买云服务器三、使用 XShell 远程登陆到 Linux???? 关于 Linux 桌面???? 下载安装 XShell???? 查看 Linux 主机 ip???? 使用 XShell 登陆主机???? XShell 下的复制粘贴???? 服务器如何共享原创 2021-12-30 09:00:32 · 742 阅读 · 10 评论