Linux系统编程
文章平均质量分 92
Linux系统编程
小林子AND
脑瓜子嗡嗡滴~
展开
-
Linux多线程【线程互斥】
生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者 要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。挂起等待锁:当某个线程没有申请到锁的时候,此时该线程会被挂起,即加入到等待队列等待。当锁被释放的时候,就会被唤醒,重新竞争锁。悲观锁:在每次取数据时,总是担心数据会被其他线程修改,所以会在取数据前先加锁(读锁,写锁,行锁等),当其他线程想要访问数据时,被阻塞挂起。原创 2024-07-02 21:11:48 · 884 阅读 · 0 评论 -
Linux多线程【线程控制】
在之前的认知中,我们都认为一个进程就是一个PCB + 程序的代码和数据。但是现在我们要重新认识进程了。当进程内部只有一个执行流的时候, 进程 = PCB + 程序的代码和数据。当进程内部有多个执行流的时候 ,那么进程 = 多个PCB + 程序的代码和数据。在CPU的视角中,CPU其实根本不关心当前调用的是进程还是线程,因为它只认PCB,也就是。所以在linux系统下,PCB原创 2024-07-02 16:37:15 · 1108 阅读 · 1 评论 -
Linux进程间通信 && pipe && 实现进程池 && 命名管道 && 实现打印日志 && 共享内存代码验证 && 消息队列 && 信号量
Linux进程间通信pipe的使用,用C++实现模拟线程池,命名管道的创建以及通信,最后实现打印日志原创 2024-05-11 18:08:23 · 825 阅读 · 5 评论 -
Linux信号概念,信号的产生异常情况,信号的保存,信号的处理,捕捉信号,可重入函数,volatile,SIGCHLD信号
Linux信号概念,信号的产生异常情况,信号的保存,信号的处理,捕捉信号,可重入函数,信号角度理解volatile,理解子进程向父进程发送SIGCHLD信号原创 2024-05-14 09:39:49 · 803 阅读 · 4 评论 -
Linux理解文件操作 && 文件描述符fd && 理解重定向 && dup2 && 缓冲区 && C语言实现自己的shell
我们在平时使用的C/C++/Java的时候,我们所用的文件操作都是封装系统接口来进行供我们操作,我们在使用这些接口,本质上就是在访问硬件,也就是磁盘一个硬件设备是如何被函数接口的调用访问到的呢?当然是通过操作系统,操作系统是管理硬件设备的,在我们学的C/C++/Java等等语言所封装的文件操作接口,都必须通过操作系统的允许,才可以访问到磁盘这个硬件设备,而操作系统是不相信任何用户的,所以为了能够得到操作系统的允许,我们又必须提供一些系统调用接口,供操作系统和用户打交道。原创 2024-05-04 21:18:19 · 679 阅读 · 2 评论 -
Linux动态库和静态库
动态库在多个程序间共享,节省了磁盘空间,操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。动态库是程序在运行的时候才去链接相应的动态库代码的,多个程序共享使用库的代码。如果程序不知道其所使用的动态库的路径, 那么进程在运行时, 操作系统就不能根据程序把动态库加载到内存中。我们知道, 动态库在链接时是不会将代码加载到程序中的, 只会将代码以一个相对地址的形式加载到程序中。如果动态库不能被加载到内存中, 进程的虚拟地址空间的共享区就不能指向动态库的代码。原创 2024-04-29 19:45:23 · 672 阅读 · 1 评论 -
Linux文件系统 && 软硬链接
如果使用512KB,可能会进行更多次数的IO,造成效率降低,而且如果操作系统使用和磁盘一样的大小,万一磁盘基本大小变化了,OS的源代码也需要改变,所以OS有自己一套的规定,这样就完成了软件和硬件的解耦。字节的空间,保存的是对应特定文件的属性,该块组内,所有文件的inode空间的集合,需要标识唯一性,每一个inode块,都要有一个inode编号。一般而言一个文件,一个。它的内部也是一个位图,每一个比特位和 特定的inode是一一对应的,如果该比特位为1,说明该inode已经被占用,否则表示空闲可用。原创 2024-04-21 10:13:43 · 828 阅读 · 2 评论 -
Linux进程的优先级&&环境变量&&上下文切换&&优先级队列
如何设置本地变量呢?但是使用【echo】命令还可以查看到,因为echo是可以操作环境变量的,所用echo命令是可以操作所有的变量的,不管是本地变量还是环境变量。,这个nice值有正负数,我们可以举一个例子:一个进程的PRI为80,我们给NI值为-10,再根据上面的公式得出新的PRI为70。因为PRI是系统内核去动态调整的,我们修改后需要经过内核的允许,如果这个PRI值超过了内核的最大限度,那么这个值就会保留在。我们发现使用env来查看我们设置的变量,并不能显示出结果,证明了我们刚刚设置的变量是本地变量。原创 2024-04-03 09:37:10 · 1738 阅读 · 83 评论 -
Linux之进程控制&&进程终止&&进程等待&&进程的程序替换&&替换函数&&实现简易shell
所以如果我们模拟实现的shell也想实现cd改变路径的功能,实际上是不可以创建子进程的,因为子进程程序替换执行cd,父进程的工作目录是没有改变的,所以直接将这一种情况单独拿出来进行判断,在这种情况下,直接让父进程执行cd命令,修改父进程的工作目录即可。在模拟shell的实现代码中,cd到其他目录,pwd之后的路径实际上是没有变化的,因为pwd实际上pwd的是父进程shell的路径,而父进程的cwd路径始终是未改变的,而执行cd命令的是子进程,所以子进程的cwd路径是会改变的。这就是进程之间的独立性。原创 2024-03-28 15:54:04 · 1530 阅读 · 83 评论 -
Linux进程地址空间详解
我们在学习C/C++的时候用到的地址是什么地址呢?虚拟地址?物理地址?本文就来寻找一下答案~原创 2024-03-23 18:23:45 · 971 阅读 · 96 评论 -
Linux手动创建用户不使用useradd【七步走完成】
Linux手动创建用户七步走原创 2024-03-21 12:21:03 · 1931 阅读 · 73 评论 -
Linux进程概念&&僵尸进程&&孤儿进程
Linux进程概念&&僵尸进程&&孤儿进程原创 2024-03-11 18:50:57 · 1746 阅读 · 89 评论 -
Linux 实现打印彩色进度条
Linux 实现打印彩色进度条详解原创 2024-03-04 10:36:55 · 2012 阅读 · 107 评论 -
Linux项目自动化构建工具之make/Makefile演示gcc编译
Linux项目自动化构建工具之make/Makefile演示gcc编译原创 2024-02-04 16:43:14 · 1619 阅读 · 76 评论 -
使用gcc/g++查看C语言预处理,编译,汇编,连接,以及动静态库的区分
使用gcc/g++查看预处理,编译,汇编,连接,以及动静态库的区分原创 2024-02-02 19:54:01 · 2151 阅读 · 56 评论 -
Linux编辑器之vim的使用
一、vim简介二、vim的基本概念三、vim的基本操作四、vim正常模式命令集移动光标删除文字复制替换撤销上一次操作更改跳至指定的行vim末行模式命令集列出行号跳到文件中的某一行查找字符保存文件离开vim五、进阶vim玩法打开文件批量注释代码执行shell命令指定注释窗口命令退出命令六、简单vim配置配置文件的位置常用配置选项,用来测试原创 2024-01-31 10:22:14 · 2489 阅读 · 52 评论 -
Linux配置yum源以及基本yum指令
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。–>来自百度百科在Linux下安装软件,一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。原创 2024-01-23 08:40:29 · 2837 阅读 · 36 评论 -
Linux与windows互相传输文件之rzsz命令
这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去。我这里有一个我文件,使用sz下载到本地。原创 2024-01-22 17:47:36 · 1601 阅读 · 32 评论 -
Linux中普通用户使用sudo命令提示lin is not in the sudoers file. This incident will be reported.
在使用Linux的过程中我们普通用户使用sudo可能遇到这样的提示pp is not in the sudoers file. This incident will be reported.原创 2024-01-21 19:54:42 · 921 阅读 · 40 评论 -
Linux粘滞位的理解,什么是粘滞位?
粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。—>来自百度百科在共享一个文件夹里面的文件的时候,我们创建的文件不想被其他用户删除,【毕竟是共享的】,所以我们就需要用到粘滞位,粘滞位就可以很好的解决这个问题,被粘滞位。原创 2024-01-19 18:35:39 · 1316 阅读 · 57 评论 -
Linux权限命令详解
权限就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源,比如vip,门禁之类的。原创 2023-12-10 14:58:27 · 1053 阅读 · 73 评论 -
Linux | tar,bc,uname指令
Linux | tar,bc,uname指令原创 2023-12-07 17:43:55 · 1513 阅读 · 52 评论 -
Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip
Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip原创 2023-11-25 16:04:44 · 1060 阅读 · 19 评论 -
Linux | 创建 | 删除 | 查看 | 基本命名详解
Linux | 创建 | 删除 | 查看 | 基本命名详解原创 2023-11-24 08:20:06 · 1715 阅读 · 57 评论 -
Linux | 安装openGauss数据库【极简版】
Linux | 安装openGauss数据库原创 2023-11-16 17:56:54 · 940 阅读 · 6 评论 -
Linux安装MySQL8.0服务
Linux安装MySQL8.0服务原创 2023-11-10 15:46:23 · 1486 阅读 · 15 评论