
Linux
文章平均质量分 84
逃跑的机械工
机械转码人,加油!!!
展开
-
c语言中回车vs换行你真的理解了吗
回车vs换行倒计时进度条原创 2023-02-14 17:40:22 · 2285 阅读 · 0 评论 -
Linux篇19多线程第三部分
在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步。下面我们来解释一下什么叫做“饥饿问题”还是举我们之前用过的例子。假如有一个 自习室,每次只允许一个人进去自习,自习室门外面的墙上挂着钥匙。ABCD几个人都想来上自习,A第一个来的,他拿着钥匙进入自习室并将门反锁了,后来的几个人BCD就只能在外面等着了。原创 2022-09-05 16:14:15 · 288 阅读 · 0 评论 -
Linux篇18多线程第二部分
首先,我们先了解一下下面一组概念:多线程执行流共享的资源就叫做临界资源:每个线程内部,访问临界资源的代码,就叫做临界区:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成现在,我们来举一个买票的例子帮助大家更好地理解临界资源。假如现在有1000张票,有四个人ABCD去抢。每个人抢到票的数量不做限制,直到抢完为止。我们用一段代码来模拟这种情景。原创 2022-08-24 20:15:44 · 371 阅读 · 1 评论 -
Linux篇17多线程第一部分
定义:线程是一个进程内部的控制序列为了让我们更好地理解线程的概念,我们看看下面的图。原创 2022-08-23 12:58:31 · 549 阅读 · 2 评论 -
Linux篇16进程信号第二部分
我们知道进程在收到信号的时候可能不是立即去处理信号的,而是要等到“合适的时候”。这个合适的时候指的是“从内核态切换回用户态的时候”。内核态通常用来执行OS代码,是一种权限非常高的状态。用户态是一种用来执行普通用户代码的状态,是一种受监管的约束状态。进程无论如何切换都能看到操作系统,但是不一定都能访问。...原创 2022-08-06 17:24:36 · 278 阅读 · 1 评论 -
Linux篇16进程信号第一部分
因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而在未决信号集中“有效”和“无效”的含义是该信号是否处于未决状态。低7位,表示的是进程退出时的退出信号,次第八位表示的是进程的退出码,而我们没有提到的第8位,就是代表进程异常退出时是否是否核心转储。我们知道,进程在收到信号的时候,不一定是在立即执行的,而是要等到“合适的时间”再去处理。信号是使用位图记录的。..原创 2022-08-05 20:49:27 · 500 阅读 · 0 评论 -
Linux篇15进程间通信之共享内存&&浅谈消息队列&&浅谈信号量
共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据.原创 2022-08-02 09:00:00 · 243 阅读 · 0 评论 -
Linux篇14进程间通信之管道
server将管道中的数据读取出来,在本地创建一个file-bak.txt,把读取的内容写到file-bat.txt。FIFO(命名管道)与pipe(匿名管道)之间唯一的区别在它们创建与打开的方式不同,一但这些工作完成之后,它们具有相同的语义。命名管道有名字,那么不同进程就可以通过名字打开同一个文件了,也就看到了同一份资源。从管道的一端写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。全双工(人在吵架的时候,你说我也说)半双工(人在正常沟通的时候,一个人说,一个人听)...原创 2022-07-24 01:41:42 · 278 阅读 · 3 评论 -
Linux篇13动静态库
动静态库本质上是可执行程序的“半成品”代码编译分为四个阶段我们将一群.o文件打包就变成了库 (.so/ .a)。所以库的本质是一堆.o的集合,不包含main,但是包含了大量的方法静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。相当于将库的代码拷贝到你的代码里面,使你的可执行文件变大。动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。在Linux下 .so为动态库,.a为静态库在Windows下, .dll为动态库,.lib为原创 2022-07-04 22:47:39 · 264 阅读 · 0 评论 -
Linux篇12文件系统inode和软硬链接
当我们使用ls-i指令查看文件信息时,会发现文件名前面有一个数字,这个数字是inode。我们也可以使用stat指令查看文件的详细信息,如下为了讲清楚inode,我们从磁盘开始说起文件 = 属性+内容。属性和内容在磁盘上是分开保存的。如上图所示,我们在创建一个文件的时候,过程是这样的:删除一个文件的时候,只要根据inode将对应的inode bitmap和Block Bitmap置为0,不需要管数据块上面的内容,所以删除很快,写入较慢我们知道,Linux下一切皆文件,目录也可以看做一个文件。那么我们再来理解一原创 2022-07-04 20:07:21 · 329 阅读 · 0 评论 -
Linux篇11基础IO
stdin & stdout & stderrC默认会打开三个输入输出流,分别是stdin, stdout, stderr。这三个流的类型都是FILE*, fopen返回值类型,文件指针stdin:键盘 标准输入stdout:显示器 标准输出stderr:显示器 标准错误在c语言里面,有fopen,fclose,fread,fwrite这些函数。而open,close,read,write都属于系统提供的接口,称之为系统调用接口。实际上,Linux环境使用fopen底层调用的还是open。那么c语言为什原创 2022-07-03 20:08:59 · 295 阅读 · 0 评论 -
Linux篇10进程控制
fork()函数为什么要给子进程返回0,给父进程返回子进程的pid父子进程立场:父进程不需要标识,子进程需要标识,因为父进程可以有多个子进程,而子进程只有一个父进程。子进程是要执行任务的,父进程需要通过子进程的pid来区分子进程,而子进程不需要如何理解fork有两个返回值?在fork()还没有return pid的时候,子进程就已经创建好了,return pid被执行了两次。进程调用fork,当控制转移到内核中的fork代码后,内核做:fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,原创 2022-07-02 20:50:48 · 229 阅读 · 0 评论 -
Linux篇9进程2
概念:cpu资源分配的先后顺序,就是指进程的优先权(priority)在linux系统中,用ps –l命令则会类似输出以下几个内容:其中PRI就是指该进程优先级,NI代表该进程的nice值新PRi = 旧PIR + nicenice的取值范围是-20 到 19共40个级别。PRI值越小,代表优先级越高。在Linux下,可以通过调整nice值来调整优先级。我们可以通过top指令更改进程的nice值,方法如下:其他概念:概念:环境变量(environment variables)一般是指在操作系统中用来指定操作原创 2022-06-29 15:36:24 · 562 阅读 · 0 评论 -
Linux篇8进程
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系这里要注意的是:存储器并不是硬盘,而是指内存。运算器和控制器统称为中央处理器,也就是我们所说的cpu;如上图所示,CPU只和内存打交道,输入输出设备也是只和内存打交道,CPU和输入输出设备没有直接的交流常见的输入输出设备有哪些呢?输入设备:键盘,网卡,硬盘,话筒,摄像头输出设备:显示器,音响,网卡,硬盘ps:像网卡,硬盘这种硬件是既可以做输入设备又可以做输出设备。他们在不同的情景下扮演不同的角色。以硬盘为例,当你把一个文件写到原创 2022-06-24 02:04:07 · 260 阅读 · 0 评论 -
yum && vim
在Linux下如何安装软件呢?一般有以下三种方式:1.源码安装2.rpm安装包3.yum(软件包管理器)这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去.关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!可以通过 ping 指令验证1.4查看软件包通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:下面我们原创 2022-06-22 01:17:16 · 128 阅读 · 0 评论 -
Linux篇6--gcc的使用及Linux下的调试
c程序的翻译过程分为如下几步:预处理(-E):头文件的展开,去注释,宏替换,条件编译预处理完成会生成".i " 文件。通过观察文件大小我们就可以看出来在预处理过程中做了一系列的操作编译(-S):C代码编译成汇编语言汇编(-c):将汇编语言翻译为目标文件(变为二进制)链接:生成可执行文件这个绿色的就是可执行程序。在这里涉及到一个重要的概念:函数库函数库一般分为静态库和动态库两种静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a原创 2022-06-09 00:06:55 · 1145 阅读 · 0 评论 -
Linux篇4--权限
1.文件类型和访问权限root,普通用户:充当拥有者,也可能充当所属组,也可能充当otherLinux中,所有的用户都要隶属于某一个组,哪怕这个组只有你一个人。那么为什么要有组存在呢? 为了更灵活的进行权限配置,满足团队协作!2.如何进行权限的修改对于单个人进行权限修改那么如何同时对于多个人进行权限修改呢用,分隔即可,不加以赘述。对于权限的修改除了上面的方法,还有一种8进制的方案3.目录的权限可执行权限: 如果目录没有可执行权限, 则无法cd到目录中可读权限: 如果目录原创 2022-05-20 19:19:32 · 748 阅读 · 0 评论 -
Linux篇3指令+初识权限
1.简单的用户切换从普通用户切换到root用户2.zip/unzip指令语法: zip 压缩文件.zip 目录或文件功能: 将目录或文件压缩成zip格式常用选项:-r 递 归处理,将指定目录下的所有文件和子目录一并处理现在我们压缩完成之后把temp.zip移动到上级目录,然后清空当前目录,接下来我们进行解压3.tar指令tar指令(重要):打包/解包,不打开它,直接看内容tar [-cxtzjvf] 文件与目录 …参数:-c :建立一个压缩文件的参数指令(create 的意思原创 2022-05-19 21:30:13 · 215 阅读 · 0 评论 -
初识Linux篇2--指令
1.touch指令语法:touch [选项]… 文件…功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。常用选项:-a 或–time=atime或–time=access或–time=use只更改存取时间。-c 或–no-create 不建立任何文档。-d 使用指定的日期时间,而非现在的时间。-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。-m 或–time=mtime或–time=modify 只更原创 2022-05-10 13:18:28 · 132 阅读 · 0 评论 -
Linux篇1-初识Linux
1.Linux能干什么Linux 能够进行各种语言的开发工作,基本主要以后端语言为主 C++,JAVA, python;Linux能进行各种指令操作,从而完成各种的文件相关的管理工作2.Linux基本指令2.1 ls指令在Linux中,以 . 开头的文件,叫做隐藏文件;ls -a 显示隐藏文件 隐藏文件:Linux配置文件,可以隐藏起来,防止误操作,起到保护作用;ls -l 列出文件的详细信息-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i 输出文件.原创 2022-05-03 18:11:45 · 884 阅读 · 0 评论