
Linux
文章平均质量分 77
流年玄月
初闻不知曲中意,再闻已是曲中人
展开
-
【Linux】linux 的常见指令,vim,gcc,gdb
---------Linux--------------ls 目录-ll 属性信息-pwd 当前目录-.. 返回上一个目录 -. 当前目录-al 详细目录,属性加文件名-whoami 文件创建者-sudo useradd xxx 创建新用户-passwd xxx-sudo userdel -r xxx 删除用户-^C 停止-yum install -y tree 建立tree命令-mkdir...原创 2022-03-09 21:46:26 · 362 阅读 · 0 评论 -
【Linux】信号(2)如何阻塞、处理信号
sigset_t 是一个在栈上定义的一个用户级变量,而这些数据添加并不会影响进程,因为 sigset_t 并没有设置进 PCB 内,所以我们必须经过系统调用设置进 OS,才能够影响进程、pending 等。这里我们需要了解的函数是: oset 是可以看作 old set,我们调用函数会对信号屏蔽字进行修改,返回老的信号屏蔽字,万一哪一天想设置回来可以记得。how 有三种方式: 1、SIG_BLOCK:添加信号屏蔽字,mask = mask | set; 2、S原创 2022-06-26 19:10:58 · 632 阅读 · 0 评论 -
【Linux】信号(1)认识、记录和产生信号
当进程发生错误时,OS 会中止进程,它是如何做到的?这就需要了解一个重要的元素:信号。OS 会发出信号使得进程状态改变,比如我们常用的 kill -9、ctrl + c 等等,那么 OS 是怎么识别这些信号的,下面我们来认识一下信号。 当信号还没产生时,我们都知道信号的结果,为什么,因为我们学习了,那操作系统怎么学习呢,在产生时我们得先识别出来。且信号产生的种类有很多种情况,进程的运行和信号的产生是属于一种异步关系,也就是说,信号产生的同时不会打搅进程的运行。 当信号产生时,不一原创 2022-06-23 22:17:42 · 541 阅读 · 0 评论 -
【Linux】进程间通信
进程间通信有3种方法:1、管道 -- 通过文件通信2、system V -- 通过共享内存 IPC 通信3、POSIX -- 通过网络通信 通信的本质是“数据的拷贝”,是进程A -> “拷贝”给OS -> OS“拷贝”到进程B,其中“拷贝”需要用到空间,所以OS一点要提供一段内存区域,能够被两个进程所看到。 进程间通讯的本质:让不同的进程先看到同一份资源(内存、文件、内核缓冲区等)。 资源由谁提供,就有不同的进程通信方式。 实现先讲解匿名管道,和它的名原创 2022-06-22 23:30:58 · 443 阅读 · 0 评论 -
【Linux】动静态库
在 Linux 下动/静态库的后缀名是 .a/.so,Windows 下是 .dll/.lib ,这类库的本质其实是,一堆 .o 文件的集合,不包含 main,但包含了大量方法,相当于半个可执行文件。查看可执行文件所依赖的库。动态库的特征: 体积小,节省物理内存空间,加载一份即可,但是依赖库;静态库的特征: gcc -o 后加 static,体积大,多个加载时速度慢,且存在数据冗余,占据磁盘和内存空间,但与库无关; 动态库在内存中有特定的共享区映射动态库,而静原创 2022-06-21 19:37:04 · 230 阅读 · 0 评论 -
【Linux】文件系统的inode是什么?软硬链接是什么?了解意义
当我们在 LIiux 中输入 ll-i 指令时,会显示文件信息:权限、拥有者、所属组等这些我都知道,但是最前面的比如 1051810 是什么,还有权限后面的3和6是什么呢?本章我们就来讲解一下 inode 和 硬链接数。 ...原创 2022-06-08 10:39:20 · 2517 阅读 · 0 评论 -
【Linux】缓冲区的概念
缓冲区有 3 种:无缓冲、行缓冲和全缓冲。 行缓冲一般体现在显示器进行刷新数据时,在内存缓冲区中,遇到 “ \n ” 刷新,如果没有遇到,那就等本行满了再刷新;全缓冲体现在对于文件写入的时候,“ \n ” 无效,只有等数据满了才写入到文件。 ...原创 2022-06-05 23:13:30 · 1945 阅读 · 0 评论 -
【Linux】基础IO——C语言与底层OS的输入输出实现
在C语言中,我们用的打开文件的函数是: “ w ”、“ > ” :写入,是一种覆盖式;“ a ” 、“ >> ”:追加;“ r ” : 读取。 如果第一个参数不带路径只写文件名,那就默认在当前路径下执行。什么是当前路径?不是指可执行程序当前所在路径,应当是当前进程运行时所处的路径。 比如说,“ w ” 状态下,可执行程序在路径 /test/day/ 中,我们默认创建进程时(./ exe),会在当前路径下创建一个 log.txt 文件,但如果在 /test/ 中原创 2022-06-03 10:31:59 · 346 阅读 · 0 评论 -
【Linux】创建进程,进程终止,进程替换
1、为什么给子进程返回0,给父进程返回子进程的 pid ?2、如何理解 fork() 有两个返回值?原创 2022-05-31 22:52:21 · 162 阅读 · 0 评论 -
【Linux】进程地址空间是什么样的关系存在
通常情况下,32x 系统下的内存大小是 4G,进程在查找数据时的地址我们认为它是一个真正的地址,其实不是,我们所能看到的地址,包括堆栈、变量等等,它们的地址其实都是虚拟地址,可以总结的说,在语言层面上见到的地址都是虚拟地址。物理地址用户看不到,由操作系统控制,以虚拟找物理。那进程是如何通过虚拟地址查找数据的呢?下面我们来讲解一下。进程地址空间:程序地址空间准确来说应该叫:进程地址空间。当一个可执行程序加载到内存中,创建对应的进程控制块 PCB,也就是 task...原创 2022-05-30 09:52:47 · 179 阅读 · 0 评论 -
【Linux】子进程的创建、状态
fork() :创建子进程我们都知道,一个可执行程序加载到内存中,就叫做进程,进程执行对应的代码。可以看得出,我们是在执行一个进程,如果想要在该进程中再创建一个进程呢,该如何进行分流。这时了解一下 fork() 函数:fork() 函数使得该进程派生出子进程,两个进程之间是父子关系,和 .bash 是爷孙关系,而 fork() 函数有两个返回值,没错,有两个返回值!!至于为什么,等一下细说。1、那么在 main 函数中,在调......原创 2022-05-29 12:00:34 · 622 阅读 · 0 评论 -
【Linux】操作系统与进程
外设、CPU 之间的第三者:内存冯诺依曼体系结构:外设只与内存交互,CPU 只与内存交互。内存有什么作用?内存具有数据存储的能力,可以预装数据。在计算机中,每一部外设与 cpu 都遵守冯诺依曼体系结构。问:从外设到 CPU,还要经过内存,岂不是更加慢了?答:不是的,CPU要访问 1 条数据,外设直接给内存装载 100 条数据,这样就只有装载的时候那 1 次满,其余的 99 次都是快。由于三者之间是独立的,在 CPU拿数据的同时,外设可以往内存中装载数据,互不干扰。结论 1...原创 2022-05-28 09:27:48 · 502 阅读 · 0 评论 -
【Linux】Makefile--自动化项目构建
在构建大型项目时,我们需要对每个 .c 文件进行编译链接,vs 中直接就帮我们生成一个可执行文件,有的文件比较大,可能加载一次就要个把小时,而且我们无法单独一部分生成可执行文件,或者生成多个不同的可执行文件,这时候我们就要用到 Makefile 来创建文件之间的依赖关系,通过依赖关系进行编译链接。建议单独先编译 .o 项目,效率更高。创建 Makefile / makefile 文件,上面是依赖关系,下面是依赖方法,依赖方法前记得一定是 Tab。.PHONY:clean 是什么意思?原创 2022-05-21 21:18:30 · 286 阅读 · 0 评论 -
【Linux】编译器gcc/g++与调试工具gdb
编译链接过程:一个程序在翻译的过程得经历4个阶段:1、预处理:头文件展开、宏替换、去注释、条件编译(#if / #endif);gcc -E // -o(保存到后序文件中) 生成 .i 文件2、编译:将 C 代码翻译成汇编代码;gcc -S // 生产 .s 文件3、汇编:汇编语言翻译成可重定向目标文件(二进制文件);gcc -c // .o 文件4、链接:生产可执行文件gcc 目标文件动、静态库:gcc 生成的可执行程序文件只有函数的调用,并没有.原创 2022-05-21 19:37:26 · 1036 阅读 · 0 评论 -
【Linux】vim的模式及指令
vim 是 Linux 系统的一种多模式文本编辑器,打开 vim 在底行模式下输入 help vim-modes 可查看所有模式。本次主要介绍3种模式:插入模式、底行模式、命令模式。每次打开 vim 一开始默认是命令模式,它们之间的切换可见下图:命令 -> 插入:-i :光标不移动;-o :新建一行;-a :往右移动一个光标;命令模式命令 :命令模式比插入模式效率高得多。锚点定位:-shift + $ :到行末尾-shift + ^ :到行开头-shif原创 2022-05-20 19:11:53 · 770 阅读 · 0 评论 -
【Linux】文件权限:拥有者、所属组、other
权限介绍原创 2022-05-18 10:08:51 · 7070 阅读 · 0 评论 -
【Linux】关于基本操作指令的讲解
简介:Linux 操作系统的目录结构和文件组织形式是以多叉树的形式组织的。为什么呢?其实不止是Linux ,许多主流的操作系统都是多叉树结构。它的好处就是:便于查找,且所有的文件都有唯一的标识方式;因为每一个子节点都只有一个父节点,所以从叶子节点到根节点的路径是唯一的,反之,根节点到叶子节点的路径也是唯一的。下面来介绍基本指令:ls 指令 :1、单独 ls :显示当前目录下有那些文件(文件名)。2、ls -l :它可以简写成 :ll ;显示更多属性信息,就...原创 2022-05-13 07:59:59 · 943 阅读 · 0 评论 -
【Linux】yum -- 软件包管理器
首先,想要再 yum 下载东西需要保证服务器是联网状态,如果用的是服务器,那么连的都是公网,可以用 ping + 网址,看到该网站的信息,想要查看几次就 ping - cn (n次)。yum 中的搜索指令:1、yum list :想要明确查看就 加上 | grep name;ps : 想要进行本地与服务器的文件交互功能,可以下载 lrzsz.x86_64 ,rz-E 是本地 -> 服务器,也可以直接拖拽, sz 是服务器 -> 本地,只传文件非目录。2、(sudo) yum mo原创 2022-05-19 22:37:43 · 338 阅读 · 0 评论