![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 77
绅士·永
不忘初心
展开
-
<Linux>POSIX信号量
只要保证共享资源任何时刻都只有一个执行流在进行访问,就有了临界资源和临界区的概念。互斥(加锁)时候,共享资源是被当做整体使用的。如果不同线程访问的是共享资源中的不同的位置,这个共享资源就可以分开来使用,让不同的执行流访问不同的区域,就可以继续并发了。那么我们如何知道这个一共有多少个资源,还剩多少个?自己初始化的你怎么保证这个资源就是给你的?程序员编码我怎么知道我一定可以具有一个共享资源呢?信号量电影院的例子:买票的本质:叫做资源(座位)的预定机制。原创 2023-04-21 21:02:30 · 521 阅读 · 0 评论 -
<Linux>system v通信
首先我们梳理一遍进程的创建,当我们创建进程A时,操作系统对进程遵循的是先描述在组织的管理方式,要描述就需要创建特定的数据结构来进行存储相应的描述数据,所以操作系统会为A创建对应的数据结构,这其中会创建一个task_struct结构体来记录这个进程的相关数据,同时操作系统会对每一个进程创建一个进程地址空间mm_struct,而task_struct里面有一个指针来指向这个进程地址空间,不清楚进程地址空间的,可以先将它想象成操作系统为这个进程画的大饼,告诉这个进程:你可以使用很多的内存,即虚假的内存。原创 2023-03-09 16:40:57 · 523 阅读 · 0 评论 -
<Linux>进程池 -- 练习
注意要实现的是父进程对子进程的通信,发送数据的只有一个进程,而管道是通过fd文件描述符来实现通信的,所以我们需要记录每一个子进程对应的管道,以此来建立父进程对多个子进程之间的联系。(隐藏的意思就是我们只需要对子进程的对应的管道文件发送数据,就可基本实现通信了)这里实现的进程池:一个父进程对多个子进程进行管道通信,大致如下。以下代码,是根据所列的框架所写的,可以参考。知道需要创建几个子进程来进行通信。和这些子进程创建同数量的管道。三、具体的接收和发送实现处理。实现子进程的数据接收。实现父进程的数据发送。原创 2023-03-07 08:20:46 · 218 阅读 · 0 评论 -
<Linux>进程间通信--管道
管道一般用于父子间通信。管道具有通过进程间协同,提供的访问控制。管道提供的是面向流式的通信服务 -- 字节流。管道是基于文件的,文件的生命周期是随进程的,管道也是。管道是单向通信的,是半双工的一种特殊情况。原创 2023-03-06 15:20:30 · 624 阅读 · 1 评论 -
<Linux>vscode搭建Linux远程开发工具
下载完Remote - SSH 后,左边会多出来一个电脑的图标,打开就会发现刚刚添加的服务器IP.(如果没有可能是没刷新,退出重进一下试试),右键我们的添加的服务器IP,出现的两个选项任选一个。在vscode中我们可以直接使用Linux终端的命令行进行代码的编译和运行(省略了我们大部分的配置时间)打开左上角的资源管理器,选择打开文件,我这里是已经打开了(会让你在输入一次密码)弹出以下的界面,输入我们的服务器账户密码即可连接成功。这里推荐的是去国内的镜像网站去下载。然后就可以进行文件和代码的编写了。原创 2023-02-20 19:14:39 · 624 阅读 · 0 评论 -
<Linux>基础IO_输出重定向&&缓冲区
就是一段内存空间(这个空间是由语言提供的);原创 2022-11-01 18:39:25 · 464 阅读 · 3 评论 -
<Linux>基础IO_文件描述符
显然不是的,程序在我们写的时候,是写在磁盘上的,在程序没有运行起来时,就是一堆没有用的数据,只有我们将程序生成的可执行程序运行起来的时候,OS会在内存中创建一个进程,这个进程是动起来的,而我们写的程序是在进程创建成功后才有效,所以。如果我们想要访问文件,那么本质就是需要我们去操作硬件,去实现硬件的IO操作,但是我们用户是没有权限去直接操作硬件的,我们只能通过操作系统提供的系统接口,通过这些接口去告诉操作系统我们想要做什么,从而间接的访问硬件进行文件的写入等操作。那么在内核中,如何看待被打开的文件?原创 2022-10-31 00:44:40 · 327 阅读 · 0 评论 -
<Linux>简单的shell解释器
shell解释器:就像下面Centos的环境下的命令行,可以解析我们输入的指令来达到运行不同功能的实现;shelll条件:必须是永不退出的,常驻内存的,我们使用死循环来解决;输入的命令又指令和指令选项:ls -a -l,我们使用命令分割来进行区分命令分割后解析需要子进程来运行解析后的指令对应的进程,这里需要运行其他进程,但是又不能影响父进程,我们创建子进程用execvp进行程序替换,来实现运行不同指令的效果;原创 2022-09-29 13:00:07 · 505 阅读 · 0 评论 -
<Linux>进程控制
fork后父子进程是全部包括之前的代码都共享;fork创建子进程(内核数据结构(OS创建) + 进程代码和数据(一般从磁盘中来,也就是C/C++程序加载之后的结果));创建子进程,给子进程分配对应的内核结构,必须是子进程自己独有的,因为进程具有独立性,理论上,子进程也要有自己的代码和数据,可是一般而言,我们没有加载的过程,也就是说,子进程没有自己的代码和数据,所以子进程只能使用父进程的代码和数据那么:代码:都是不可修改的,只能读取,所以父子共享是没有问题的!数据:可能被修改的,所以必须分离!原创 2022-09-19 22:44:53 · 472 阅读 · 0 评论 -
<Linux>进程地址空间
程序打印地址,是进程打印地址,是程序运行之后打印的地址。每一个进程都有一个地址空间!讲个故事例子:有一个大富翁 有10亿美金 还有3个私生子。大富翁给每一个私生子都画10亿美金的饼,大富翁面对每一个私生子都需要画对应的饼。我们将其对应起来大富翁 -- 操作系统,10亿美金 -- 地址空间,私生子 -- 进程。那么地址空间就相当于操作系统给进程画的大饼,是一个虚拟的空间。内核中的地址空间本质也一定是一种数据结构。将来要和一个特定的进程关联起来。原创 2022-09-16 10:10:29 · 679 阅读 · 6 评论 -
【Linux】yum_gdb_git
定义:yum类似于应用商店。原创 2022-08-07 14:33:26 · 232 阅读 · 0 评论 -
【Linux】vim_gcc_动静态库
一款多模式编辑器vim工具有三种基本模式:命令模式、插入模式、底行模式控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模 式。要查看你的所有模式:打开vim,底行模式直接输入。...原创 2022-08-04 19:43:57 · 203 阅读 · 0 评论 -
【Linux】权限-粘滞位
就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限.每一个用户对于的权限都是3位,这就很简单了,又该权限标记为1,没有为0,在将其二进制转换为八进制。当一个目录被设置为"粘滞位"(用chmod+t),则该目录下的文件只能由。chmod+t目录名设置粘滞位权限,一般由root设置。因为文件和目录的权限还要经过文件掩码的修饰。常用选项-R递归修改文件或目录的所属组。功能修改文件或目录的所属组。规定文件的八进制默认权限是。...原创 2022-07-23 16:22:59 · 1099 阅读 · 0 评论 -
【Linux】基本指令_(2)
目录1、more2、less3、head4、tail5、时间相关的指令1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下2.在设定时间方面3.时间戳6、cal7、find :(灰常重要) -name8、grep9、zip/unzip10、tar11、bc12、uname13、重要的热键14、关机15、wc16、xargs17、| 管道18、输出输入重定向、追加重定向>:输出重定向>>:追加重定向...原创 2022-07-14 10:36:02 · 143 阅读 · 0 评论 -
【Linux】基本指令_(1)
目录1、ls2、pwd3、cd4、touch5、mkdir6、rmdir & rm7、man8、cp9、mv10、cat语法: ls [选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:语法: pwd功能:显示用户当前所在的目录Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。语法: cd 目录名功能:改变工作目录。将当前工作目录改变到指定的目录下。语法:touch [选项]... 文件...功能:touc原创 2022-07-13 09:03:23 · 111 阅读 · 0 评论 -
【Linux】Xshell环境搭建
目录方案:一、购买一个云服务器二、用Xshell链接三、账户添加1、虚拟机2、双系统(十分不推荐)3、Xshell,购买云服务器(最简单方便)可以在腾讯云、阿里云、华为云官网处购买,学生购买有优惠活动也不是很贵。购买后在自己购买的服务器页面选择重置密码,这里的密码是你的root用户密码,尽量设置复杂一点。 安装好Xshell后,打开 会弹出一个会话框:点击确定。 会弹出如下对话框:这里后面会出现一些提示,我们都选择接受就可以了。然后会出现如下的对话框:第一次登录我们输入root, 然后输入之前在云服务器原创 2022-07-11 20:51:20 · 1828 阅读 · 0 评论 -
<Linux>五子棋小项目
目录一、实现目标二、代码逻辑三、代码实现game.hgame.cmain.cMakefile一、实现目标如下图:输入对应的坐标进行交替落子直到有一方五子连珠时结束二、代码逻辑一、分文件处理先创建game.c game.h main.c Makefile文件二、InitBord初始化棋盘创建一个二维数组用来存放数据,进行内存初始化 // 初始化棋盘 int playbord[COW][COL]; mem...原创 2022-05-08 19:48:10 · 2515 阅读 · 8 评论 -
<Linux>小项目#进度条#
一、预期进度条:就像平时下载东西时的一个进度条一样,有一个进度长条,进度条后面有数字和加载信息二、预备知识1) 换行和回车要想实现进度条首先需要区分换行和回车的区别我们平时所说的换行回车的过程是-->光标到下一行,并且到下一行的开头,但其实换行和回车是有严格的区分的换行:在当前光标处进行换行回车:光标回到这一行的开头 ’\r‘(回车符)在vs或者其他编译器中是将回车和换行合在一起的'\n'2) 缓冲区计算机在进行数据的处理的时候,中间.原创 2022-05-02 22:10:38 · 915 阅读 · 0 评论