Linux操作系统
文章平均质量分 90
Linux学习笔记
嘎嘎旺
这个作者很懒,什么都没留下…
展开
-
【linux】硬链接和软链接
发现特征:1.软链接是一个独立的文件,因为有独立的inode number2.硬链接不是一个独立的文件,因为没有独立的 inode number ,用的是目标文件的inode3.属性中有一系列硬链接数文件磁盘级引用计数:有多少个文件名字字符串通过inode number 指向我软硬链接是什么?1.软链接:目标文件对应的路径字符串(对标windows上的快捷方式)2.硬链接:一个文件名和inode的映射关系,建立硬链接,就是在指定目录下,添加一个新的文件名和 inode的映射关系。原创 2024-05-10 16:02:48 · 596 阅读 · 0 评论 -
【linux】共享内存
1.shmget//创建共享内存key为用户给操作系统来标识共享内存的标识符,方便另一个进程来找到共享内存size为共享内存大小shmflg 创建共享内存的方式,位图形式返回shmid操作系统给用户的对应共享内存的操作符,用来对共享内存进行操作,比如说要释放共享内存,给shmctl函数传参shmid,要查看对应共享内存的属性,给shmctl也要传shmid2.ftok//产生一个随机值key,保证共享内存的唯一性pathname :路径字符串(任意)proj_id:任意数值。原创 2024-04-30 13:15:48 · 651 阅读 · 0 评论 -
【linux】命名管道
首先认识一个函数,他可以形成一个命名管道第一个参数是新建的命名管道放在哪个路径下的路径字符串,第二个参数为该文件的打开权限同时shell提供指令 mkfifo +命名管道名也能形成管道,会新建在当前路径下unlink函数实现删除管道参数为命名管道文件的所在路径。原创 2024-04-29 15:29:45 · 268 阅读 · 0 评论 -
【linux】匿名管道|进程池
1.进程为什么要通信?进程也是需要某种协同的,所以如何协同的前提条件(通信)通信数据的类别:1.通知就绪的2.单纯的数据3.控制相关的信息2.进程如何通信?进程间通信,成本会高一点进程间通信的前提,先让不同的进程,看到同一份(资源,一段内存)一定是某一个进程需要通信,让os创建一个共享资源os必须提供很多的系统调用,os创建的共享资源不同,系统调用接口不同,进程间通信会用不同的种类3.进程通信的常见方式是什么?消息队列共享内存信号量。原创 2024-04-23 18:39:09 · 804 阅读 · 0 评论 -
【linux】重定向|缓冲区
将文件标识符为fd的文件内容读到buf中去,读count个,read的返回值是实际读到的个数,有可能文件中没有count个,但是read返回的还是实际读到的个数。原创 2024-04-04 17:47:50 · 916 阅读 · 2 评论 -
【linux】进程替换的应用|shell解释器的实现
当我们学过了进程替换之后,本篇文章可以根据进程替换的知识带你自主实现一个shell命令行实现步骤1.显示命令行提示2.读取输入指令以及对应选项3.分割第二步的指令以及选项到命令行参数表中4.处理内建命令5.进程替换。原创 2024-03-31 14:54:27 · 1216 阅读 · 7 评论 -
【linux】基础IO |文件操作符
需要掌握:操作文件,本质:进程操作文件。进程和文件的关系向文件中写入,本质上向硬件中写入->用户·没有权利直接写入->操作系统是硬件的管理者,我们可以通过操作系统往硬件写入->操作系统必须提供系统调用(默认操作系统不相信任何人)我们使用的fopen/fwrite/fread/fprintf/scanf/printf/cin/cout/实际上都是对系统调用的接口的封装.原创 2024-03-29 19:59:28 · 741 阅读 · 1 评论 -
【linux】进程替换
1.疑问为什么这里的退出码是0,不是1呢?原因是由于子进程被替换成ls进程后,旧的子进程后面就不执行了,所以exit(1)这句代码就不会执行,而是执行新进程ls,而进程ls执行成功,所以退出码为0.验证:我们可以通过改变要替换的子进程不存在,就不会替换子进程,所以退出码会是12.execl函数参数分析总结:1.execl函数,可以执行起来新的程序2.execl函数,执行完毕后,后续的代码不见了,因为被替换了。原创 2024-03-24 17:58:50 · 529 阅读 · 0 评论 -
【linux】进程控制
进程:内核相关管理数据结构(pcb+地址空间+页表)+代码+数据当fork函数创建一个子进程时,如何保证进程具有独立性?父进程的数据以及代码来自磁盘,而子进程的代码是共享父进程的,至于数据,如果子进程不修改数据的话,同样也是和父进程共享的,而如果子进程要修改数据,就会发生写时拷贝,保证数据的独立性,子进程的退出也不会对父进程做干扰.父进程退出也不会对子进程做干扰.原创 2024-03-22 18:48:03 · 1195 阅读 · 0 评论 -
【linux】进程的地址空间
代码解释:定义一个全局变量,然后创建子进程,让子进程在5秒开始修改这个值,观察子进程和父进程这个全局变量是否一样我们发现val变量子进程和父进程的值不一样,这个我们可以理解,因为进程的独立性,导致父进程和子进程的val不一样,但是为什么val两个的地址还是一样的解释:这里的地址并非物理地址,同一个物理地址只可能出现一个值,这里的地址其实是进程的地址空间,也叫做虚拟地址。原创 2024-03-20 16:47:38 · 1103 阅读 · 0 评论 -
【linux】环境变量
僵尸状态当子进程处于僵尸状态时,数据以及代码已经被退出,而保留的是他的pcb,然后要等待父进程来回收,如果父进程未回收,子进程的pcb存在在内存,导致内存泄漏孤儿进程父进程先退出,等到子进程退出的时候,没有父进程来回收子进程,这种叫做孤儿进程,而对于孤儿进程会被1号init进程领养孤儿进程演示为什么要被领养?子进程退出,父进程早已经不在,子进程需要被进程回收,所以被领养。原创 2024-03-18 19:37:15 · 931 阅读 · 0 评论 -
【linux】进程状态
由于fork()函数给子进程和父进程返回的pid不同,我们可以根据fork的返回值来对父进程和子进程区分开来如果返回的id是原创 2024-03-02 11:23:41 · 911 阅读 · 0 评论 -
【linux】体系结构和os管理
操作系统工作我们可以理解为一个银行的大系统,操作系统类比行长,而底层硬件可以理解为银行所有的硬件设施,行长是不直接和硬件设备打交道,驱动程序就是我们银行的工作人员,相当于执行者,包括后勤人员,后勤人员将硬件的信息统计起来交给行长,行长对信息进行描述,组织,就相当于对硬件设施的管理,而默认银行系统是对任何人不信任的,对外提供功能,只暴露几个窗口,在操作系统内核,也只提供几个接口对外提供功能,为了更好的提供服务,银行会在外面也设置几个服务人员,而操作系统内核也会提供第三方库,和shell程序,和用户打交道.原创 2024-02-19 21:50:24 · 991 阅读 · 0 评论 -
【linux】git和gdb调试工具
在vs中逐过程:F10在gdb中的逐过程:8.next8.n(简写)我们在主函数那打个断点,然后使用指令r让程序跑起来,遇到main函数处打的断点停下来,然后按n,开始逐过程,我们发现到了add函数不进函数内部,z直到程序结束.在vs中逐语句:按F11在gdb逐语句:9.step9.s(简写)同理,我们在主函数打断点,按r让程序跑起来,当到断点处,按s/step,我们发现可以进入add函数中。原创 2024-02-04 20:19:11 · 974 阅读 · 1 评论 -
【linux】Linux项目自动化构建工具-make/Makefile
linux原创 2024-01-27 13:42:35 · 1394 阅读 · 0 评论 -
【linux】Linux编译器-gcc/g++使用
先写一段代码演示。原创 2024-01-23 22:04:59 · 858 阅读 · 0 评论 -
【linux】Linux编辑器-vim
关于 rzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去1.查看软件包2.软件的安装11.如果是普通用户使用指令33.yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.出现 “complete” 字样, 说明安装完成.3.使用sz指令11.首先我们在linux环境下创建一个文本文件,并写入hello world.原创 2024-01-20 12:26:20 · 1292 阅读 · 0 评论 -
【linux】粘滞位.yum
1.我们先以root身份创建一个目录,接着在这个目录下创建一个文件2.接着我们切换成普通用户,然后删除了qq.c3.然后返回root,查看178目录的other的权限发现other在目录有w权限就可以删除目录下的文件了,和目标文件没关系如果我们想在linux下,由多个用户建立一个共享文件,来被大家共同访问,怎么办?首先这个文件,不能在我们各自的家目录下创建。因为家目录下的文件,other权限都是空的,我们只能在系统的非用户目录下创建。原创 2024-01-18 22:09:39 · 639 阅读 · 6 评论 -
【linux】权限
1.大部分指令都是文件2.用户执行某种功能时候,不是直接让操作系统执行对应的指令,而是交给外壳程序.这里提到了一个叫外壳程序的,他是什么呢?答:他是一个介于用户和操作系统之间的软件,命令行解释器.他的作用是将使用者的命令翻译给核(操作系统)处理。同时,将核心的处理结果翻译给使用者.原创 2023-12-13 20:29:42 · 372 阅读 · 6 评论 -
【linux】基本指令(上篇)
基本指令原创 2023-12-01 19:57:05 · 237 阅读 · 6 评论 -
【linux】基本指令(中篇)
将引号内容打印到显示屏上输出的重定向追加的重定向输出的重定向我们学习c语言的时候当以写的方式创建一个文件,就会覆盖掉该文件之前的内容当我们以追加的方式打开文件的时候,原文件内容不会被覆盖而是追加。原创 2023-11-25 22:57:58 · 806 阅读 · 39 评论