![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 83
linux学习分享
kqs__
这个作者很懒,什么都没留下…
展开
-
Linux 进程(十) 进程替换
多种进程替换函数。原创 2024-01-05 22:02:32 · 1198 阅读 · 0 评论 -
Linux 进程(九) 进程等待
status是一个整形,有三十二个bit位,前16个bit位不用,后十六个bit位的前八位表示进程退出时的退出码,后七位表示进程退出时收到的信号。该代码,总共运行十三秒,前五秒父进程子进程一起运行,前五秒过后子进程退出。中间五秒父进程等待回收子进程,这时会看到子进程僵尸的状态,中间五秒后,父进程回收子进程。非阻塞调用表示:父进程基于非阻塞的轮询访问子进程,访问一次子进程发现没有结果,然后就返回,不必等到子进程有结果才返回。子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏,原创 2024-01-04 21:36:29 · 499 阅读 · 0 评论 -
Linux 进程(八) 进程的退出码
函数也是有返回值的。而_exit是系统调用接口,exit是c语言提供的库函数,库函数是不能终止进程的,只有操作系统提供的系统调用才能够终止进程,那么他们的关系就比较明确了。他们两个的功能是一模一样的,exit是c语言给我们提供的接口,而_exit是linux系统给我们提供的接口,那么二者有什么区别呢?进程出现退出是进程收到了异常的信号,每个信号都有不同的编号,每个编号都有自己的异常原因。查看最近一个进程的退出状态,查看到的是0 表示的就是成功。exit是终止进程 其中status:是进程退出时候的退出码。原创 2024-01-04 21:36:07 · 2443 阅读 · 0 评论 -
Linux 进程(七) 进程地址空间
下面我们来看一段代码。原创 2024-01-03 21:46:18 · 3205 阅读 · 0 评论 -
Linux 进程(六) 环境变量
答案是可以的,bash在创建子进程时,同时创建了两张表,一张命令行参数表,一场环境变量表,都传递给了其创建的子进程。如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。bash 帮我们维护一个数组数组里面存储着我们输入的命令行参数的地址,bash读取命令行参数以空格为间隔,将这串字符传给main函数,也就造成了上面我们看见的情况。这是一个常见的main函数,那么main函数可以带参吗?原创 2024-01-03 21:45:41 · 501 阅读 · 0 评论 -
Linux 进程(五) 调度与切换
在只考虑一个CPU的情况下,这些进程“看起来像”同时运行的,实则是轮番穿插地运行,由于时间片通常很短(在Linux上为5ms-800ms),用户不会感觉到。在runqueue上还存在着两个指针,查看英文释义,一个是活跃的,一个是到期的。cpu寄存器只有一套,但是里面存储的进程的数据却可以有很多套,虽然数据存储在一个共享的cpu设备里,但是某个进程的数据,都是被某个进程所私有的!普通的运行队列都是FIFO的机制,Linux下的调度算法是考虑到优先级,考虑到效率和考虑到饥饿的问题。这两个指针是怎么切换的呢?原创 2024-01-02 22:04:27 · 1073 阅读 · 0 评论 -
Linux 进程(四) 优先级
这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行所以,调整进程优先级,在Linux下,就是调整进程nice值。需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。原创 2024-01-02 22:04:09 · 403 阅读 · 0 评论 -
Linux 进程(三)
状态查看,僵尸进程,孤儿进程原创 2023-12-02 21:45:13 · 1218 阅读 · 0 评论 -
冯诺依曼体系结构
我们平时用一些输入设备时候,比如键盘,话筒等,输入的速度很慢,与cpu运算速度相差了很大的量级,此时cpu会早早把输入的数据处理完成而处于闲置的状态,造成了资源的大大浪费,那么cpu就不需要做的这么高效与精细了。决定整个计算机的效率从cpu变成了某些硬件。内存出现的意义是的计算机的效率都变高了,把硬件之间拷贝效率的问题,转化成为软件的问题(软件问题就是操作系统写的怎么样,能不能预加载和缓存... ...)。数据信号的流动就是数据在计算器的各个硬件之间的之间的拷贝,拷贝速度越快,计算机工作的速度也就越快。原创 2023-11-28 21:29:30 · 474 阅读 · 0 评论 -
Linux调试器-gdb使用
disable ‘断点号’ 注意是断点号,而不是行号。从查看断点信息哪里可以知道断点号。然后一直按 enter 就可以显示全部代码了,enter 可以记住上一个我们的指令。要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项。Linux gcc/g++出来的二进制程序,默认是release模式。开始调试:直接gdb,我们生成的可执行程序就可以开始调试了。程序的发布方式有两种,debug模式和release模式。开始调试后只按 l 的话会出现部分行号,如果想要从头开始的话,需要按 l0。原创 2023-11-27 22:15:51 · 1004 阅读 · 0 评论 -
Linux git
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。但在此之前的⼯作都需要这些不同版本的报告,于是每次都是复制粘贴副本,产出的⽂件就越来越多,⽂件多不是问题,问题是:随着版本数量的不断增多,你还记得这些版本各⾃都是修改了什么吗?所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。⽂档如此,我们写的项目代码,也是存在这个问题的!“报告-究极进化版”?原创 2023-11-27 22:15:35 · 1289 阅读 · 0 评论 -
Linux 小程序-进度条
不是的,因为c对io函数提供了一个缓冲区,这段代码执行的结果先被保存在缓冲区中,之后等程序完成后才刷新到屏幕上。上面写的进度条并没有根据实际的下载进度来显示进度,而是以固定模式来显示进度。是先执行了sleep(3);我们可以根据当前的实际情况来显示进度,比如根据文件的传输速率来显示进度。以前的键盘会有一个这样的按键 ,这个键就是回车与换行。注意:在linux下 “\r” 是回车然后在打印。回车:从当前行回退到当前行的起始位置。这样就能在显示行打印出倒计时的感觉了。换行:从当前行切换到下一行的该位置。原创 2023-11-15 22:03:41 · 464 阅读 · 0 评论 -
Linux项目自动化构建工具-make/Makefile
会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了,一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。原创 2023-11-15 22:03:26 · 250 阅读 · 0 评论 -
Linux 函数库
最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?通过静态链接所生成的可执行文件的属性和动态库还是不同的。原创 2023-11-14 22:21:11 · 217 阅读 · 0 评论 -
预处理详解(二)
许多C 的编译器提供了一种能力,允许在命令行中定义符号。用于启动编译过程。例如:当我们根据同一个源文件要编译出一个程序的不同版本的时候,这个特性有点用处。(假定某个程序中声明了一个某个长度的数组,如果机器内存有限,我们需要一个很小的数组,但是另外一个机器内存大些,我们需要一个数组能够大些。for(i = 0;//linux 环境演示。原创 2023-11-03 22:27:06 · 128 阅读 · 0 评论 -
预处理详解(一)
define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。下面是宏的声明方式:其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。参数列表的左括号必须与name紧邻。如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。这个宏接收一个参数 x .如果在上述声明之后,你把5 * 5警告:这个宏存在一个问题:int a = 5;原创 2023-11-01 19:27:11 · 87 阅读 · 0 评论 -
linux下的程序环境和预处理(gcc演示)
在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码。 组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。 每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。 链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接原创 2023-11-01 19:26:40 · 278 阅读 · 0 评论 -
Linux编辑器-vim使用
三种模式正常模式插入模式底行模式vim操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。原创 2023-10-30 21:29:33 · 2260 阅读 · 0 评论 -
Linux 权限管理(二)
linux前都会有一串这个字符,第二字符到第九字符分别表示拥有者,所属组,和other所对应的权限。为什么我们创建的普通文件:默认权限不是777 而是664。为什么我们创建的目录文件:默认权限不是777 而是775。说明:只有文件的拥有者和root才可以改变文件的权限。常用选项:-R 递归修改文件或目录的所属组。+:向权限范围增加权限代号所表示的权限。-:向权限范围取消权限代号所表示的权限。=:向权限范围赋予权限代号所表示的权限。R -> 递归修改目录文件的权限。功能:修改文件或目录的所属组。原创 2023-10-30 21:29:14 · 147 阅读 · 0 评论 -
Linux权限的概念 及 权限管理
此时我们需要链接 sudoers 白名单,在名单中的便可以执行有限的root权限,不在白名单的就如下。我们不想让把自己变成root ,但是需要一定的root权限怎么办呢?也就不同,比如群主的“禁言”,“踢人” ... ... , 但要清楚的是,换个也当群主也能干这些事情!比如qq群,群主就是。“身份” “身份” “身份”原创 2023-10-16 22:27:36 · 38 阅读 · 0 评论 -
shell命令以及运行原理
我们来举个简单的例子来解释:张三是个刚大学毕业的程序员,老大不小,到了结婚的年纪了,对隔壁家的如花暗恋已久。王婆不好意思直接去告诉张三如花的心意,但是由于张三的爹是村长,只好让实习生去告诉张三。这样事情即使办砸了,王婆既能给村长一个交代就说,实习生业务能力不强,又能使自己不受牵连。王婆第一次去如花家给张三说媒,但是如花却不愿意,王婆回去告诉张三如花的心意,但张三不死心。过两天又让王婆去,结果王婆还没进门,就发现李四在如花家中吃饭,这时候王婆就懂了。此时王婆已经了解到如花的心意,知道张三的请求是不可能的。原创 2023-10-16 22:27:56 · 212 阅读 · 1 评论 -
Linux 基本指令(下)
关于 tar 命令我们目前直到这三个就可以了。原创 2023-10-10 22:27:50 · 315 阅读 · 0 评论 -
Linux 基本指令(上)
语法: ls [选项][目录或文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 单个ls显示当前目录下的文件和目录 常用选项: -l (list:清单,列表)列出文件的详细信息。 -al 列出目录下的所有文件,包括以 . 开头的隐含文件,(linux 下的隐藏文件常以 .形式开头) 补充: ps: ls -l == ll 语法: pwd 功能:原创 2023-10-02 22:03:19 · 615 阅读 · 0 评论 -
Linux环境搭建
1. 认识 Linux, 了解 Linux 的相关背景2. 学会如何使用云服务器3. 掌握使用远程终端工具 xshell 登陆 Linux 服务器原创 2023-10-02 19:58:43 · 101 阅读 · 0 评论