
Linux
文章平均质量分 86
Linux详细介绍
你们叫她小龙女么
主要记录学习历程,加油加油加油加油加油
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux文件系统
1.第三方库,往后使用的时候必定要带 -l 选项(但是像系统提供的fork,wait,或者语言提供的,如c语言提供的printf等,我们不需要带 -l选项)2.gcc默认进行动态链接,但是如果系统中只提供静态库,gcc则只能对该库进行静态链接(ldd可以查看Linux系统下动态库依赖关系)3.如果系统中需要链接多个库,那么gcc可以链接多个库,只需要在-l 后面加4.如上图,一个程序是可以混合链接的,既可以有动态链接也可以有静态链接。原创 2024-11-27 15:27:31 · 944 阅读 · 0 评论 -
Linux基础IO
w Truncate(缩短) file to zero length or create text file for writing.1.进程也有进程的当前路径cwd,该进程建立的文件会建在该进程的当前路径,当我们更改了当前进程从cwd,就可以把文件新建到其它目录下了。2.w,写入之前都会对文件进行清空处理3.w/a都是写入,而和w不同的是,a是追加写。pathname: 要打开或创建的目标文件。原创 2024-10-23 22:29:32 · 1121 阅读 · 0 评论 -
Linux shell的简单实现
【代码】Linux shell的简单实现。原创 2024-10-20 22:07:46 · 147 阅读 · 0 评论 -
进程间通信
1.1分析输入的命令行字符串,获取由多少个|,把命令打散成多个子命令字符串1.2malloc空间,pipe申请多个管道1.3循环创建多个子进程,每一个子进程的重定向情况:最开始:输出重定向,把标准输出重定向到指定的一个管道的写端中间:把 0标准输入重定向到上一个管道的读端,把1标准输出重定向到下一个管道的写端最后一个:输入重定向,把标准输入重定向到指定一个管道的读端。原创 2025-02-12 16:22:51 · 840 阅读 · 0 评论 -
Linux进程替换
用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。我们可以先复习一下进程地址空间的相关知识cpu执行进程时,会通过页表映射到其代码和数据当我们进行进程替换时,即使用替换函数执行ls时,ls会。原创 2024-10-17 09:31:22 · 557 阅读 · 0 评论 -
共享内存、消息队列和信号量
1.信号量本质上一把计数器,PV操作是原子的2.执行流申请资源,必须先申请信号量资源,得到信号量之后才能访问临界资源3.信号量是0.1两态的被称为二元信号量,就是互斥功能4.申请信号量的本质就是对临界资源的预定机制信号量凭什么是进程间通信中的一种?1.因为通信不仅仅是通信数据,互相协同也是通信的一种2.要协同,本质也是通信,信号量首先要被所有的通信进程看见。原创 2025-01-06 14:43:17 · 1173 阅读 · 0 评论 -
进程的控制
因此进程的退出码可以被它的父进程拿到,可以通过 echo $?由此通过errno变量我们可以知道库函数调用失败的错误码,也可以通过strerror打印错误原因,还可以将错误码转化为进程的退出码。在fork之后,页表中所有进程地址的标志位都变成只读,看后续谁先触发只读权限的错误就给谁进行写时拷贝,并且修改权限为可读可写。通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式拷贝一份副本。我们这个main函数return的是进程的退出码,来表征进程的运行结果是否正确。原创 2024-07-09 21:34:49 · 1358 阅读 · 0 评论 -
Linux:开发工具(gcc/g++等)
实质上头文件包含的是方法的声明,而方法的实现在库中,库其实就是把源文件(.c)进行一定的翻译,然后打包,只提供我们一个文件,不提供太多的源文件,而且也可以起到隐藏源文件的效果。动态库因为是共享库,可以有效节省资源,(磁盘空间,内存空间,网络空间等),动态库一旦缺失,会导致与它链接的各个程序都无法运行。如果我们没有动态库,只有静态库,gcc还是能找到静态库进行静态链接的,-static的本质是改变调用库的优先级。在编译器使用动态库进行动态链接的时候,会进行跳转,跳转到库中执行,再返回我们的代码调用处。原创 2024-06-20 23:03:31 · 1110 阅读 · 4 评论 -
进程的等待
之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。另外,进程一旦变成僵尸状态,kill -9 也无法再处理僵尸进程,因为谁也没有办法杀死一个已经死去的进程。最后,父进程派给子进程的任务完成的如何,我们需要知道。如,子进程运行完成,是否正常退出,如果正常退出结果对还是不对父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息。原创 2024-07-11 15:10:09 · 642 阅读 · 7 评论 -
Linux:make与makefile
值得注意的是因为修改文件内容时,绝大多数时候文件的大小都会改变,因此modify改变大部分情况change也都会改变,而修改文件属性时则不会改变modify。假设这是一个makefile文件,make的时候默认生成第一行的目标文件 ,make会自动推导makefile中的依赖关系,推导过程是一个栈式结构。change是文件属性被修改的最近一次时间,包括文件名,文件大小,文件创建日期,文件的权限等等。因为一定是先有源文件再有可执行文件的,所以一般而言,源文件的最早修改时间是要比可执行文件早的。原创 2024-06-22 01:06:15 · 1009 阅读 · 4 评论 -
Linux:Linux上git的使用
如果输入git --help 会显示下面一大串那么就是已经安装,否则需要自行手动安装。原创 2024-06-24 14:32:36 · 565 阅读 · 0 评论 -
Linux:进度条的实现
使用模块化编程。原创 2024-06-24 12:37:06 · 530 阅读 · 0 评论 -
linux中的调试工具gdb
3. list(简写为l)行号:显示binFile源代码,接着上次的位置往下列,每次列10行。如果后面添加行号,它会将行号所在的语句放在显示出来的代码的较为中间部分,所有当我们l 0时,因为前面没有代码了,所有效果就等效于从第一行开始显示10行。gdb会记忆上一次进行的操作,比如我使用 s,按回车键就会继续产生按s的效果,如果我们先输入了一个 l 0,继续按回车就会产生继续按l的效果。12print(简写为p):打印表达式的值,通过表达式可以修改变量的值或者调用函数p 变量:打印变量值。原创 2024-06-24 17:27:54 · 874 阅读 · 1 评论 -
进程地址空间(初)
task_struct中存有页表的起始地址,cpu中有一个cr3寄存器可以储存该进程的页表信息,(页表信息也属于上下文),因此当需要访问内存的时候,cpu可以通过cr3寄存器找到该进程的页表,再通过虚拟地址去找到物理地址。2.增加进程虚拟地址空间可以让我们访问内存的时候,增加一个转换的过程,在这个转化的过程中,可以对我们的寻址请求进行审查,所以一旦异常访问,它会被直接拦截,该请求不会到达物理内存,可以起到。当我们要访问内存时,我们先找到虚拟地址,再看其标志位,当标志位为1,那么我们直接访问对应的物理内存。原创 2024-07-09 10:16:03 · 1205 阅读 · 0 评论 -
进程的初步认识
abcde都是独立的个体,所以各个单元必须要用“线”连接起来,称为总线,为图中红色1.系统总线 连接运算器和控制器2.io总线 连接存储器和输入输出设备一个程序要运行必须先加载到内存,是因为冯诺依曼体系就是这样子规定的计算机管理硬件1. 描述起来,用struct结构体2. 组织起来,用链表或其他高效的数据结构。原创 2024-07-06 18:37:03 · 1264 阅读 · 0 评论 -
进程切换与环境变量(一)
环境变量是一组name=vaule形式的变量,不同的用户具有不同的环境变量,环境变量具有全局性它的作用是帮助系统“认识你是谁”原创 2024-07-08 09:46:54 · 772 阅读 · 0 评论 -
Linux:权限
如果我们想要暂时对一条命令进行权限的提升可以使用 sudo 指令, 可以暂时使用root身份来调用这条指令,比如说我们使用 sudo whoami 那么会输出root,不过用户要实现存在于系统的信任白名单中。linux中,每个人的身份只能被唯一识别,比如说如果用户a既是拥有者,也是所属组,系统会优先认定其为拥有者,如果文件的属性是r--rw-r--,那么该用户是不能写该文件的。如果我们需要共享文件,需要我们在里面可以创建自己的文件,进行增删查改,但是不能删除他人文件,我们可以增加粘滞位。原创 2024-06-18 23:19:51 · 688 阅读 · 0 评论 -
Linux:工具(包含sudo提权与vim快捷配置)
在Linux下安装软件1.源代码安装,下载到程序的源代码, 并进行编译, 得到可执行程序2.rpm安装 Linux安装包但是这两种方法太过于麻烦,因此我们使用yum3.yum安装 解决安装源,安装版本,安装依赖(相关联的插件什么的都会一并装了,不需要我们担心)原创 2024-06-19 21:26:54 · 1539 阅读 · 10 评论 -
Linux:基本指令
文件的类型d:是一个目录-:文件是一个普通文件在Linux中,以.开头的文件称为隐藏文件,任何一个目录下面都有两个隐藏文件.. :表示当前路径的上层路径.:表示当前路径,其存在意义是帮助用户定位当前目录下的一个文件常用选项(选项可以多个叠加使用)如 ls -a -d1. -a列出目录下的所有文件,包括以.开头的隐藏文件2.-d将目录像文件一样展示,而不是显示其下的文件, 如ls -d 指定目录3.-l 列出文件的详细信息。原创 2024-06-14 14:57:06 · 1007 阅读 · 0 评论