![](https://img-blog.csdnimg.cn/direct/2d79ae7c058c49cea7f049c6e27ca244.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux从入门到入土
文章平均质量分 92
Linux的学习之路
无聊看看天T^T
事以密成,语以泄败
展开
-
Linux的信号保存 && 信号处理
1、实际执行信号的处理动作(默认、忽略、自定义捕捉)称为信号递达2、信号从产生到递达之间的状态叫做信号未决(pending)3、进程可以选择阻塞(block)某个信号4、阻塞一个信号,那么对应的信号一旦产生,永不递达,一直未,直到主动解除阻塞5、信号的阻塞和未决无关(未决只是要做未做,阻塞是永远不做除非唤醒)6、两张位图 + 一张函数指针数组 = 进程识别信号原创 2024-05-17 11:49:40 · 273 阅读 · 0 评论 -
Linux的信号量 && PV操作 && 加解锁 && 信号的产生
为了让信号量可以向共享内存一样让不同的进程看到,从而申请与释放,因此信号量也必须是一个共享资源,而作为一个共享资源,信号量除了要保证临界资源的安全外还要保护自己的安全,3、进程对于资源的访问,本质上是通过代码访问的,但并不是所有的代码都会去访问共享资源,即进程中的代码 = 会访问共享资源的代码 + 不会访问共享资源的代码。(A进程申请一个全局生命周期的信号量,那么其它与A进程没有“血缘”关系的进程就不可能看到这个信号量,更别提当其它进程访问临界资源时该信号量能干什么事了)用于释放信号量,将信号量的值加1。原创 2024-05-16 21:53:11 · 616 阅读 · 0 评论 -
Linux的命名管道 && 共享内存
使用管道是因为共享内存空间不会提供对自己本身的保护机制,这就会导致数据不一致问题(客户端还没写完,服务端就疯狂的读取),使用管道 + read函数的方式,当客户端向共享内存空间中写入数据后会向管道中发送一份可以读取提醒,否则服务端就会一直因read读取不到管道中的内容而阻塞,当服务端读取到客户端向管道中写入的提醒时就会开始读取(当然读取什么并不重要我们要的是能让他阻塞等待客户端写完),服务端不再阻塞后就会打印此时共享内存空间中的内容(相当于读取了)原创 2024-05-14 18:24:48 · 743 阅读 · 0 评论 -
Linux的进程间通信 && 管道 && 进程池
3、将pipe创建的内核级文件缓冲区叫做管道,是因为它在本质上还是一个内核级文件缓冲区,只不过正常情况下一个进程对文件进行写的时候就是写入内核级文件缓冲区然后由OS负责定时刷新到管道,而新建的缓冲区不会向磁盘中刷新而是刷新给进程,刷新的目的地改变了,只需将原来内核级文件缓冲区的代码稍加更改就可以实现这一功能,并且“一进一出”还符合我们日常生活中对管道的理解原创 2024-05-10 16:07:06 · 796 阅读 · 0 评论 -
Linux的基础IO:软硬连接 && 动态库 && 静态库
开发者将自己的操作手册和方法实现全部放入一个目录中,并由室友”模拟“下载该目录:如果室友想不gcc其它.o文件直接gcc自己写的文件,可以直接将这些文件放入系统的文件中,这样直接gcc main.c就可以生成可执行程序了,存入之后就可以将安装包mylib删除了:此时室友main.c所包含的头文件可以从""变为了:#include :表示引用标准库头文件,编译器会从系统配置的库环境中去寻找。原创 2024-05-08 14:49:46 · 996 阅读 · 0 评论 -
Linux的基础IO:文件系统
对文件的所有操作(open等方法对文件进行操作时可能仅有"文件名"没有路径)一定涉及路径(为了逆向解析),因为只有通过文件所在路径才能知道该文件所在分区(每个进程的cwd中都会记载文件当前所在的路径,该路径 + 文件名就可以拼成一个完整的路径,然后由OS进行逆向解析,解析到该路径的前缀就可以确定文件所属分区,然后一层层的拿到文件与inode number的映射关系,直到进入文件所在分区)最后在该分区对文件进行操作,没有路径确定文件的具体位置,那么对文件的各种操作就是无法落地的一纸空文(即找到路径->确定分区原创 2024-05-04 21:49:10 · 867 阅读 · 2 评论 -
Linux的基础IO:文件描述符 && 重定向本质
stdin、stdout、stderr的struct_file中除了有_fileno还有语言级别的文件缓冲区,printf和fprintf函数会先将要打印的内容放入stdoutd的struct_file中的文件缓冲区中,由fflush(stdout)指令将该缓冲区中的数据刷新至log.txt的内核文件缓冲区中(因为此时fd = 1指向的是log.txt),最后由OS定期将log.txt内核级文件缓冲区中的数据刷新至磁盘中:注释fflush就会导致stdout的struct_file中的文件缓冲区数据无法刷新原创 2024-05-01 19:44:48 · 961 阅读 · 0 评论 -
Linux进程概念(七):进程替换 && 自主shell的编写
fork创建子进程后,执行的是和父进程相同的代码,但有时可能需要子进程执行不同的代码分支,故子进程往往要调用exec函数来执行另一个程序新程序的代码和数据替换(覆盖)原进程的代码和数据,对原进程的PCB会有稍许修改在一个进程替换后不会创建新进程。原创 2024-04-29 21:44:26 · 588 阅读 · 0 评论 -
Linux进程概念(六):进程控制
代码运行完后是否正确可以通过进程的退出码决定,退出码可默认可自定补充:代码执行时,出现异常导致提前退出的根本原因是因为该进程收到了OS发给它的信号kill - l 查看信号找到确定退出原因1、进程终止一共有三种情况:代码跑完,结果正确代码跑完,结果不正确代码执行时,出现异常导致提前退出2、衡量一个进程退出情况可以依据退出码和退出信号1、任何进程,在退出时,一般必须要被父进程进行等待(退出信息要交给父进程)如果父进程不管Z状态的子进程,直接退出,则造成内存泄漏(子进程的PCB)原创 2024-04-27 20:47:43 · 562 阅读 · 0 评论 -
Linux进程概念(五):地址空间 && 写时拷贝
子进程在修改g_val的值后,父进程的g_val不变,子进程的g_val发生改变结论:0x601054是虚拟地址而不是物理地址,否则子进程修改g_val会导致父进程的g_val也改变。原创 2024-04-25 11:54:10 · 481 阅读 · 0 评论 -
Linux进程概念(四):进程优先级 && 环境变量
指定进程获取某种资源的先后顺序进程访问的资源(CPU等)是有限的,而会有多个进程试图访问同一资源ps -al进程的优先级,值越小优先级越高也叫nice值,是一个整型的进程优先级的修正数据,nice的取值范围是[-20,19](40个)Linux中,每次调整优先级都是基于默认PRI的,且不建议频繁调整优先级。原创 2024-04-22 23:38:39 · 683 阅读 · 0 评论 -
Linux的权限(二)
Linux中的文件类型、文件操作权限、如何修改文件权限、文件权限值的两种不同表示方式、权限有无带来的影响、如何修改文件角色、文件掩码umask,以及共享文件夹的创建原创 2023-12-16 20:06:17 · 971 阅读 · 0 评论 -
Linux的基本指令 ( 一 )
介绍了ls指令、cd指令、which指令、tree指令、pwd指令等指令的内容和使用方式,同时也做了必要内容的补充,比如绝对路径与相对路径的知识......原创 2023-11-24 14:46:32 · 1002 阅读 · 0 评论 -
Linux的基本指令(四)
本篇主要讲述了对于时间指令date、时间戳的使用、如何挑选出我们想要的信息的grep指令、在目录中找到我们想要找到的某种类型的文件的find指令以及压缩和解压缩的zip与unzip指令......原创 2023-11-26 23:33:47 · 1495 阅读 · 0 评论 -
Linux的基本指令(五)
主要讲解了,与文件的打包与压缩相关的tar指令、同时基于tar指令延伸出了实现压缩文件在Linux与Windows之间的互传、压缩文件在Linux与Linux之间的互传、同时还讲解了开关机指令以及一些要的拓展知识,最后讲解了shell命令及其运行原理......原创 2023-12-02 15:47:34 · 1026 阅读 · 0 评论 -
Linux的权限(一)
初步认识Linux中的权限相关内容......原创 2023-12-02 19:35:19 · 964 阅读 · 0 评论 -
Linux的权限(三)
一个文件是否可以被删除与它本身的读取(r)、写入(w)和执行(x)权限无关,而与它所在目录的写入权限有关,要删除一个文件,你需要对包含该文件的目录具有写入权限。如果你没有目录的写入权限,即使你对文件本身拥有全部权限也无法删除它(要删除一个文件你得看它的父级目录都给你了的什么权限,当然root用户有时候可以强制删除文件)原创 2024-01-23 23:36:09 · 836 阅读 · 0 评论 -
Linux的基本指令(二)
学完本篇我们对于Linux中文件的创建、删除、剪切、复制等功能就有了基本的认识与实践,但是相比于这些指令,在学习过程中一些指令以外的知识的补充会更加重要......原创 2023-11-25 19:06:06 · 1426 阅读 · 0 评论 -
Centos 7、Debian、Ubuntu中tree指令的检查与下载
在大多数Linux发行版中,`tree`命令通常不是默认安装的指令,这里我们讲述了如何检测是否已经安装了tree指令以及如何在各版本中的安装方式......原创 2023-11-24 14:32:10 · 2149 阅读 · 2 评论 -
Linux软件包管理器yum
用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。(安装完毕之后可以通过拖拽的方式将文件上传过去)安装软件时由于需要向系统目录中写入内容。命令可以罗列出当前一共有哪些软件包。我们可以通过很简单的一条命令完成。会自动找到都有哪些软件包需要下载。安装软件只能一个装完了再装另一个。由于包的数目可能非常之多。表示操作系统发行版的版本。选择包时要和系统匹配。安装一个软件的过程中。原创 2024-01-23 23:54:58 · 383 阅读 · 0 评论 -
Linux知识简单总结
1、linux下给文件start.sh设置权限为自己可读可修改可执行,组内用户为可读可执行不可修改,其余用户没有任何权限,那么设置该文件权限的命令为。4、Linux 有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用。2、在Linux中,file.sh文件的权限为-rw-r--r-x,其对应权限用数值形式表示为。6、 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是。3、 如果系统的umask设置为244,创建一个新文件后,它的权限为。原创 2024-01-15 19:28:42 · 857 阅读 · 0 评论 -
Linux的开发工具(二):编译器gcc/g++ && Makefile
会不会makefile,从侧面说明了一个人是否具备完成大型Linux工程的能力,一个工程中的源文件不计其数,它们按照类型、功能、模块分别放在若干个目录中,makefile中定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作原创 2024-03-31 23:35:14 · 1007 阅读 · 1 评论 -
Linux的开发工具(一):编辑器vim
vim是vi的升级版,兼容vi所有指令的同时还有了新的特性,它还是Linux的多模式编辑器。(shift + g全部选中、数字 shitf + g指定n行选取,长按j也可)文件保存或退出、文件替换、找字符串、列出行号等,命令模式下shitf+:进入。文字输入删除,esc返回命名模式,使用最频繁的编辑模式。(此时处于正常模式,切换至插入模式才能输入文字)(如果第一次查找的不是想要的,可以按n继续。(如果第一次查找的不是想要的,可以按n继续。控制屏幕光标的移动、字符、字或行的删除等。原创 2024-01-24 23:45:24 · 1136 阅读 · 0 评论 -
Linxu的开发工具(三):缓冲区 && 调试器gdb
缓冲区是内存空间中的一块区域,在执行printf函数时,里面的字符串会被放入缓冲区中,这些存放在缓冲区中的数据在经历一次“刷新”后就可以在显示屏上显示了(程序结束时以及缓冲区满了时都会“刷新”缓冲区)原创 2024-04-03 13:54:04 · 682 阅读 · 2 评论 -
Linux的基本指令(三)
学完本篇我们就在上两篇关于Linux文件操作(复制、粘贴等)的基础上,进一步了解了文件的输出和输入重定向,以及如何查看大文本文件等内容,更重要的了解到了Linux中一条十分重要的设计理念:一切皆文件......原创 2023-11-26 18:59:22 · 1406 阅读 · 0 评论 -
进程的基本概念 && 进程的创建
process control block,是进程的所有属性的集合,是对所有操作系统中进程控制块的统称,是一个内核中的数据结构,在不同操作系统中进程控制块会有不同的具体名称。函数返回之前完成的,此后的代码会被父子共享包括return id,因此返回两次id,一个是父进程的id,一个是子进程是否创建成功的id。2、两次返回值的id,一个是子进程的id,一个是父进程的id,父进程的id是子进程的pid。包括程序代码和进程相关数据的指针,还有和其它进程共享的内存空的指针。程序的一个执行实例,正在执行的程序等。原创 2024-04-04 23:48:02 · 1226 阅读 · 0 评论 -
Linux进程概念(三):进程的状态
**/R:运行状态,并不意味进程一定在运行中,而是表示进程要么在运行中要么在队列中S:可中断(ctrl + c)睡眠状态,进程在等待"资源"就绪(CPU执行进程的速度极快,显示设备读取速度慢,执行好的内容就会等待输入到显示设备上)T/t:停止状态,可以通过发送SIGSTOP / SIGCONT 信号让T进程停止 / 运行(t是被追踪时停止,比如调试时的打断点操作,T是纯粹的暂停状态)查看进程信号指令:kill -l(9、19、18、杀死进程、暂停进程、继续继续进程)原创 2024-04-04 23:49:10 · 420 阅读 · 0 评论 -
冯诺依曼体系结构 && 操作系统的基本概念
将多个被管理者对象进行描述形成它们各自的数据对象,然后根据这些数据对象选定一种特定的数据结构将这些数据对象组织起来,此时对被管理对象的管理工作就转化成了对特定数据结构的增删查改,这就是一个基本的建模过程原创 2024-04-03 23:54:53 · 701 阅读 · 0 评论