Linux系统编程
文章平均质量分 82
从0到1的Linux学习博文,详细全面,学起来吧少年!
二十5画生
野蛮其身体,文明其精神
展开
-
Linux--信号量详解
信号量是将整体的资源分割成多份使用信号量本质是对资源的预定机制。原创 2024-10-08 22:52:55 · 367 阅读 · 0 评论 -
线程id与互斥---线程阻塞和线程加锁详解
锁是一个叫做互斥锁类型的数据类型,作用是:任何时刻,只允许一个线程进行资源访问这样就使得并行的访问,变成串行的访问。进而解决线程互斥,即同时访问资源的冲突。原创 2024-08-28 23:36:47 · 649 阅读 · 0 评论 -
多线程:创建、等待、终止、分离详解
在Linux下创建线程依赖第三方库因为在Linux中只有轻量级进程,因此整个第三方库只是一个对轻量级进程的封装也因此,Linux自带一个叫做pthread的库因此,创建线程的代码:1、需要#include <pthread.h>2、编译链接时,需加上库名:-lpthread。原创 2024-08-26 12:58:03 · 702 阅读 · 0 评论 -
多线程理解
在正式开始多线程理解之前,还需要有一些相关理解,以便于后期更全面、深刻的理解多线程。原创 2024-08-18 21:19:35 · 688 阅读 · 0 评论 -
信号处理详解
在我们的生活中到处都可以看见信号,比如:烽火戏诸侯、飞鸽传书、古希腊马拉松送捷报,现在的QQ、微信、还有你被crush拉黑的哥谭感叹号等等等。那么,在我们计算机体系中,信号是如何产生、发送和处理的呢?信号的整个生命周期:信号产生、信号保存、信号处理。本文,将会详细介绍信号是什么。在操作系统中,一共有31个普通信号信号处理:默认动作、忽略动作、自定义处理---信号捕捉进程处理信号,都是默认的---默认动作通常指向终止自己 / 暂停 / 忽略信号的记录。原创 2024-08-17 21:44:11 · 1128 阅读 · 0 评论 -
共享内存、消息队列、信号量
一般来说,共享内存、消息队列、信号量详解这三个技术,用的不多,简单认识了即可。如果想进一步了解,可以接着AI学习。原创 2024-08-17 21:38:19 · 772 阅读 · 0 评论 -
进程池详解
提前建立一堆进程,而不是从头开始建立进程例如,我们执行命令的时候,命令本身也是进程,所以需要bash创建进程要从头开始创建进程PCB、分配空间等成本很高如果每一次都要从头开始建立,很浪费时间成本所以,为了提高效率,提前建立多个子进程等待在父进程和子进程之间,建立单向管道通信当父进程有任务需要子进程执行时,直接把任务写入管道中对应管道的子进程读取数据,开始执行分配的任务如果父进程没有分配任务,子进程就处于等待阻塞的状态当父进程分配任务时,叫做唤醒子进程。原创 2024-08-17 21:19:20 · 1019 阅读 · 0 评论 -
进程间通信---管道通信、命名管道、匿名管道详解
什么是标准?通俗理解,就是一件事情,要怎么做。例如说,一个硬件,要怎么做,如功率多大,尺寸多大、IO接口怎么设计等。那么这个标准,谁规定的?这个行业最叼的公司制定的;凭什么你规定?因为人家叼;你怎么证明你叼?我的发明专利最多,质量最好;我又为什么要听你的?因为你不按照我的做,你卖不出去。例如说,现在有一家手机生产商,手机的充电口是正方形的,你买吗?你不会买。而专利,是需要收钱的;你掌握了标准,你就掌握了市场控制权。所以,这也就是为什么老美跟华为死过不去的原因。原创 2024-08-16 17:00:14 · 1255 阅读 · 0 评论 -
静态库和动态库
(对于一个新的认知,是不可能建立在抽象上的,所以必须具体。我会先带着你看现象,然后再去解释,这是什么,为什么,怎么办。本文章,将介绍:什么是静态库?动态库如何写静态库和动态库?第三方库是什么?怎么用调库?等。原创 2024-08-09 19:33:02 · 862 阅读 · 0 评论 -
文件系统超级详解,彻底理解文件到底是怎么回事~
本文章,将回答上述问题,让同学们对文件、操作系统、软硬件工作、程序、数据等有一个更加系统、深刻的认识和理解。在这个过程中,请同学们跟着我充分发挥想象力,我们每一个都是天生的想象家!原创 2024-08-09 17:09:46 · 1023 阅读 · 0 评论 -
软链接 硬链接详解
二、特征软链接是一个独立的文件,因为有独立的inode软链接的内容:目标文件对应的路径字符串,类似windows中的快捷方式删掉目标文件,软连接就失去目标软链接有什么用?软链接相当于快捷方式硬链接不是一个独立的文件,因为没有独立的inode,用的是目标文件的inode硬链接就是一个文件名和inode的映射关系,建立硬链接,就是指定目录下,添加一个新的文件名和inode编号的映射关系 硬链接相当于重命名属性中有一个叫做硬链接数:(标红部分)也叫做文件的磁盘级引用计数:有多少个文件名字的字符串,原创 2024-08-08 23:14:46 · 411 阅读 · 0 评论 -
重定向、缓冲区详解
上述的代码中,把1文件(标准输出,显示器)关闭后,再新建一个myfile文件,他的fd会被分配到1,因为1是空着的。此时,我把信息写入到myfile文件内,即fd为1的文件,此时,只是写到了myfile语言级缓存内,还没有刷新到内存中。可是,我们的操作系统还没有来得及刷新,代码就跑完了,直接close掉文件,我们就无法进行刷新。文件描述符的分配规则:查看自己的文件描述表,分配最小的没有被使用的fd。所以,事实上,要做重定向,是两个文件描述符指向的文件的改变。原创 2024-08-08 22:30:17 · 706 阅读 · 0 评论 -
万字解析文件fd,深刻理解:fd文件描述符、位图、标准输入、标准输出、标准错误、文件打开、文件关闭、Linux一切皆文件理解、进程和文件的关系、虚拟软件系统
什么是文件?打开文件是什么意思?怎么打开文件?关闭文件又是什么意思?怎么关闭文件?打开的文件怎么管理?关闭的文件又怎么管理?为什么要管理?如何管理?文件路径是什么意思?什么是位图?我们不能仅从语言角度去理解文件,还需要站在操作系统的角度去理解才能全面。所以,本文将会从操作系统的角度去深刻理解文件。同时,回答上述的若干问题。原创 2024-08-08 21:38:25 · 771 阅读 · 0 评论 -
进程的管理与控制详解:创建、终止、阻塞等待与非阻塞等待
fork() 后,父进程和子进程同时开始执行代码,但是它们执行的顺序和执行的内容可能有所不同,具体取决于操作系统的调度策略。调用 fork() 函数时,操作系统会创建一个新的进程(子进程),该子进程是调用进程(父进程)的一个副本。是本进程的退出码,这个退出码交给父进程,让父进程知道子进程退出的情况(成功 / 失败且失败的原因是什么)status:等待父进程中,任意一个子进程退出,如果不关心子进程的退出状态,可以传入 NULL。子进程的 PID 和父进程不同,但是它们会继承父进程的文件描述符和信号处理器等。原创 2024-08-05 15:42:43 · 1126 阅读 · 0 评论 -
进程替换详解
环境变量的参数,如果传的是自定义的,那么就会全部替换为自定义后的环境变量。exec*函数作用:进程代码使用exec*函数,可以执行新的程序。同时,exec*系列的函数,执行完毕后,后续的代码和数据被替换了。1、新的环境变量,自己构建,这样会全部替换bash的环境变量。第一个参数:你想执行谁,路径,解决的是找到的问题。第二个参数:你想怎么执行,解决的是如何解决的问题。所以,exec*函数,可以是视为一种加载函数。原创 2024-08-05 14:46:18 · 923 阅读 · 0 评论 -
命令行参数、环境变量详解
可是,为什么我们在运行自己的程序时,必须加上./执行ls pwd等程序却不需要呢?而执行程序,首先要找到命令的所在位置,然后加载到内存中,再运行所以,我们可以这样理解:ls等命令不需要路径,是不是因为bash已经知道了这个程序的路径呢?而且这个路径以某种形式默认着而我们自己写的程序,因为没有这种默认,所以bash不认识,所以必须要指明路径是不是这个原因呢?是的,没错,就是如此而这个默认的形式,就是环境变量,PATH。原创 2024-08-05 13:53:37 · 2126 阅读 · 0 评论 -
零基础进程最详解:进程状态、僵尸进程、孤儿进程、阻塞态、挂起态、进程切换、进程常用命令、进程创建、队列优先级
本质是指定一个进程获取某种资源的先后顺序优先级如何控制?是PCB的内部字段,int prio在Linux中,优先级数字越小,优先级越高。原创 2024-08-01 16:50:43 · 1191 阅读 · 0 评论 -
零基础理解,什么是进程
课本概念:程序是一个执行实例,正在进行的程序等内核观点:担当分配系统资源(CPU时间、内存)的实体长什么样子?就是下面你会发现,一个操作系统内部,可以同时存在多个进程有多个进程,就要管理怎么管理?先描述,再组织。运用前面博主关于操作系统从管理角度的理解的文章,延展出来,将之逻辑套用在进程的进行理解。按照这个逻辑,什么是进程?进程 = PCB + 进程本身的数据和代码要管理进程,首先要描述用c语言描述,就是一个名为。原创 2024-08-01 12:28:39 · 873 阅读 · 0 评论 -
如何理解代码的跨平台?
这就导致函数名、函数返回值、函数逻辑等都不一样,自然就不可以运行,即所谓不兼容,不具备跨平台。例如用户使用的printf和scanf函数,在windows和Linux下效果是一样的。但是,我们的c语言和c++语言,却可以同时再windows和Linux下运行。但是,我们对这些系统接口再做了一层封装,这个就是所谓的库函数,例如c++的。一般来说,window的操作系统和Linux的操作系统肯定是不一样的。那么提供的系统调用接口和诸多细节也是不一样的。事实上底层的细节是不一样的,但是你看不到。原创 2024-08-01 12:12:09 · 235 阅读 · 0 评论 -
操作系统——管理角度理解
每当新的硬件设备连接到计算机,都需要安装驱动程序,否则操作系统就无法对该硬件进行管理。2、但是,我用户不懂什么操作系统,更不懂什么接口,我只懂双击666,那里亮了点那里。如果没有操作系统,就需要用户自己去底层管理软硬件的资源调配,那是不现实的。所以,操作系统内部对硬件的管理,就变成了对硬件创建对应的结构体对象的管理。因此,操作系统再系统调用的基础上,还需要对上提供专门针对用户的接口。银行对用户是一个黑箱子的状态,对用户开放的,只有一个银行窗口。同时,操作系统大部分的工作,就是对这部分结构的组织和管理。原创 2024-07-28 23:26:10 · 473 阅读 · 0 评论 -
Linux下git维护
gitignore:有些文件我就不想同步到本地和远端,那么将对应的后缀的文件全部放到该文件中。所以,如果你不想将某些后缀文件传送到远端,就可以在文件内配置相关的后缀信息。因为对应git来说,本地和远端维护是同步的,所以双方的通信地位是对等的。在进行git.add的时候,只是把变化的部分存到本地仓库的暂存区。而commit则是将暂存区的变化部分,加载到git本地仓库。对源代码的历史修改进行维护,保留历史的所有修改痕迹。而git push实际是将本地的修改同步到远端仓库。git是工具,github是网站。原创 2024-04-17 23:29:40 · 410 阅读 · 0 评论 -
操作系统再理解
当检测到键盘、鼠标等硬件时,操作系统就读取对应硬件的数据属性,先描述对象,设置为节点,然后将各个硬件的对象节点给组织起来。可是那么多学生,张三、李四、王五、赵六、田七、丘八、老九、、、假如说有5万名学生。形态各不相同,怎么管理?因为硬件是操作系统管理的,如果你可以直接访问硬件你,绕过了操作系统,就有可能对操作系统的硬件管理产生影响。对软硬件进行管理(手段),为用户提供一个良好(稳定的、安全的、高效的)的运行环境(目的)例如,学生比较重要的数据有:姓名、籍贯、性别、年级、紧急联系人、记过、成绩、、、原创 2024-04-16 16:02:10 · 594 阅读 · 0 评论 -
冯诺依曼结构理解
CPU的计算速度是很快的,所以数据设备间的拷贝效率,决定了计算机整体的基本效率。在降低了计算机成本的基础上,并没有对计算机的运行处理速度造成很大的损失。当一个创新发生,产生了相当范围的影响,那么创新就不仅仅局限于创新本身了。数据是要在计算机的体系结构中进行流动的,在流动过程中对数据加工处理。这样CPU取数据时,就可以不用等输入设备,而是直接从存储器中取数据。那么,也就是说,这个世界使用计算机的只有100人。这样的设计构架,加快了整体计算机的数据处理效率。计算机中寄存器的速度是最快的,既然是最快的。原创 2024-04-15 07:39:38 · 341 阅读 · 0 评论 -
Linux gdb调试
l XXX.c:0 #对XXX文件从0行开始查看源代码。为什么软件版本要分为release和dbug版本呢?b n :在n行位置打断点(只能一个一个设置)release:成熟版本(不可以被调试)p(print) &n:查看变量n的地址。undiplay n:取消n号常显示。debug:测试版本(可以被调试)display n :常显示变量n。为什么dbug版本可以被调试呢?l n #查看n行(一般在中间)n(next):逐过程(F10)s(step):逐语句(F11)p(print) n:查看变量n。原创 2024-04-14 20:48:13 · 320 阅读 · 0 评论 -
对于缓冲区的理解
当我们打开文件时,会默认打开三个流:标准输出流、标准输入流、标准错误流(主要是方便用户输入输出)如果光标回到开始位置,那么就会从开始位置进行输入,对已经存在的字符进行覆盖。ls > file:将ls的内容重定向到file。fflush(stdout)#强制刷新缓冲区。刷新缓冲区就是将缓冲区的内容输出到屏幕。缓冲区存在的意义是为了提高效率。回车换行\n其实是两个动作。\r只是回车,回到开始位置。而老式键盘是从打字机来的。原创 2024-04-14 20:46:19 · 182 阅读 · 0 评论 -
Linux makefile文件
make makefile/Makefile(大小写都可以):make是一个命令,makefile是一个目录文件现在你写了一个test.c文件,要编译运行。原创 2024-04-14 20:45:34 · 400 阅读 · 0 评论 -
Linux gcc、g++编译
gcc:专门编译C语言g++:编译C语言和C++原创 2024-04-14 20:34:49 · 891 阅读 · 0 评论 -
Linxu vim详解(常用命令)
1、ctrl + v:区域选择(支持shift + g)进入视图模式,使用hjkl方向控制。n + r:对光标指定的位置,进行一个字符的替换,可以一次替换多个。好了,那么如果说你用自己的账号就可以进行提权,那还要root干嘛?shift + r = R :替换模式,会直接向后进行文本替换。根据提示进行选择输入,是覆盖还是不保存等等,即可继续进行操作。但是,你每一次vim打开该文件,都会提示这个临时文件,很麻烦。当然,如果你对文件没有任何修改,那么断网断电对文件都没有影响。原创 2024-04-14 20:28:40 · 1056 阅读 · 0 评论 -
Linux yum详解
在手机上安装应用软件的时候,例如应用商城你的手机本身是没有这个软件的而是需要在应用商城去下载下载的过程,就是和后台服务器进行数据传输后台服务器将软件的数据向你的手机进行传输在这样的模式下,只要应用商城有的软件,你都可以进行下载此时应用商城就是一个软件下载安装管理的客户端苹果手机的应用商城是ios系统下的软件下载安装管理;华为手机的应用商城是鸿蒙系统下的软件下载安装管理;Micorosoft Store是微软下Windows系统下的软件安装管理;原创 2024-04-14 20:19:06 · 1060 阅读 · 0 评论 -
Linux权限(umask掩码)
所有,如果我要修改三个角色的权限,设置为rwx,可以直接chmod 777 filename #意味着将三个角色全部设置为有权限。创建文件的时候,要从其实权限中,过滤掉(不是简单的减法)在umask中出现的权限(002)也就是其所在的目录有关,那么目录对应的角色和对应的权限就可以对文件进行操作。因此,你有权限执行a文件,但是a文件不是一个可执行文件,所以执行不了。一个用户在创建的时候,默认只会给自己权限打开,所属组和其他权限为0,同时,按理来说,在安装的时候,会把qq.exe文件放在对应的路径下。原创 2024-04-14 20:17:35 · 852 阅读 · 0 评论 -
Linux华为云Hadoop配置环境
手工搭建Hadoop环境(Linux)_弹性云服务器 ECS_最佳实践 (huaweicloud.com)找了半天,最后在官网找到配置方式。跟着傻瓜式CV即可。原创 2024-04-01 23:15:03 · 1095 阅读 · 1 评论 -
Linux最常用基本指令合集
常用基本指令合集详解原创 2024-03-25 18:11:19 · 1191 阅读 · 0 评论 -
浅谈关于Linux的学习
指令只是很基础的一部分,学习Linux更加重要的是其底层原理的知识,需要从基本的指令开始,逐级而上,次第往深处挖掘。最后构建起整个的知识体系。而不是仅仅记住几个指令。网上能够查找的大部分知识,触手可得,没有多大价值,重要的是。我们需要追求的知识是:它是什么?知其然,以及其何以所以然。原创 2024-03-25 12:49:45 · 235 阅读 · 0 评论 -
Linux环境安装
开年采购季_云服务器_云主机_企业上云-华为云 (huaweicloud.com)开年采购季_云服务器_云主机_企业上云-华为云 (huaweicloud.com)开年采购季_云服务器_云主机_企业上云-华为云 (huaweicloud.com)删除用户:userdel -r user_111(用户名),重置密码,以及查找你的公网ip地址(登陆链接需要)输入如密码(服务器的密码务必尽量复杂,很容易被攻击)passwd user_111//给用户设置密码。(看个人经济条件和需求,选择一个购买)原创 2024-03-25 12:42:02 · 1361 阅读 · 0 评论 -
Linux的发展历史
一个事物的发展,不可能是孤立的的发展,而是同时伴随着相关事物的伴随发展。所以,在这个模式下,与此同时的,计算机、网络、各种软硬件、编程语言、操作系统各个分支体系也随之应运而生并不断发展。这个时候,就出现了公司,让私人或者企业来接收研发相关的科目,同时可以让他们将军事技术包装转化成民用技术,再进行销售,获得利润。同时军事科技还有一个问题,即不能产生利润,国家投入大量的钱,却不会有直接的经济回报。然而,技术的研发需要钱、人、资源,而政府本身是没有科研能力的,那么让谁来研发呢?,说白了就是要钱有钱,要人有人。原创 2024-03-25 12:19:56 · 256 阅读 · 0 评论