Linux
文章平均质量分 88
不吃玉米尖尖
正在疯狂输入....
展开
-
【Linux】指令篇
Linux是一款非常强大且安全的操作系统。学习它,当然是从指令开始,下面对一些常用指令进行总结。ls指令语法:ls [选项] [目录或文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常用选项: -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -d 将目录象文件一样显示,而不是显示其下的文件。 如:...原创 2018-10-13 10:35:41 · 416 阅读 · 0 评论 -
【Linux】进程间通信 ----- 消息队列(IPC资源)
system V消息队列消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法,每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值,消息队列也有管道⼀样的不⾜,就是每个消息的最⼤⻓度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有⼀个上限(MSGMNI)。消息队列也是ipc资源。IPC资源必须删除,否则不会自动...原创 2019-01-22 12:28:20 · 651 阅读 · 0 评论 -
空指针引用故障(空指针解引用)
C语言中的指针机制使得它灵活高效,但由于指针操作不当产生的动态内存错误也有很多,比如内存泄漏(Memory Leakage)、内存的重复释放、空指针解引用(NullPointer Dereference)。其中空指针引用故障,也叫空指针解引用是一类普遍存在的内存故障,是程序设计语言中一类常见的动态内存错误。指针变量可以指向堆地址、静态变量和空地址单元 。当指针指向无效内存地址时对其引用,有可能...原创 2019-01-09 18:52:45 · 6246 阅读 · 0 评论 -
【Linux】vim编辑器个性化设置
由于我个人在使用vim时的一些需要,将vim进行了一些个性化配置,使之使用方便。 1 set shortmess=atI ----启动时隐去援助提示 2 syntax on ----语法高亮 3 set backspace=2 ----设置 backspace可以删除任意字符...原创 2019-01-09 19:55:41 · 1261 阅读 · 0 评论 -
【Linux】软链接与硬链接
在Linux操作系统下,我们知道 ls -l 命令 可以查看文件属性,如果再输入 ls-i 命令,我们会发现属性前面多了一串数字。这个数字就是 inode 。链接-->快速认识文件描述符及其分配规则;你不懂的 inode 是什么?很明显,inode它没有重复的。那么它和我们说的软链接、硬链接有什么关系呢?下面一一解答。 软链接软链接实际上就是一个文件,并且是一个独立的文件,它...原创 2019-01-16 11:24:52 · 196 阅读 · 0 评论 -
【Linux】什么是Core Dump值?
Core Dump值最初接触到是在进程控制那个部分,(【Linux】进程的控制 ---- 创建、终止、等待、替换)其中进程终止时,子进程的退出状态status的位图如下:当一个进程要异常终止时,可以选择把进程的用户空间内存数据以文件的形式全部保存到磁盘上,文件名通常是core,这种行为叫做Core Dump。也叫核心转储。进程异常终止通常是因为有Bug,比如非法内存访问导致段错误。事后...原创 2019-01-23 16:38:56 · 450 阅读 · 0 评论 -
【Linux】如何安装gdb调试器 超实用!!
1.卸载旧版本首先我们需要检查系统中有没有安装过gdb,有的话用一下命令卸载gdb旧版本。2.安装Texinfo文档系统先用su切换到root模式,然后执行yum命令3.下载安装包4.解压5. (./configure)进入全局配置模式6.make这个过程有点点久,耐心等待....不过这一行行代码真的看着超厉害的像电影里的黑客一样hhh~~~国产...原创 2019-02-25 13:45:01 · 2237 阅读 · 0 评论 -
【Linux】Linux下如何生成及使用动态库与静态库?
静态库与动态库库这个概念对于我们来说并不陌生,在C语言中,我们使用了很多次库,比如printf。一般使用库其实是在用两个东西:一是对应的库文件,二是与库文件相对应的 .h 头文件。一般在在Linux中,库文件有两大类,分别是动态库(.so)和静态库(.a)。(Windows下为动态库(.dll)静态库(.a))静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时...原创 2019-01-17 14:09:05 · 366 阅读 · 0 评论 -
【Linux】Linux中怎么设置和删除环境变量
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如PATH.在交叉编译中,会经常运用到环境变量的设置。查看当前全部的环境变量的命令是env. 查看环境变量的值是echo +$变量名。例如查看PATH的内容:echo $PATH 添加环境变量例如要将/home/admin/code/lib/include加入到环境变量LD_LIBRARY_PAT...原创 2019-01-16 16:41:45 · 28927 阅读 · 0 评论 -
【Linux】信号的基本概念、信号的产生、记录与处理
一、信号的基本概念信号在我们生活中随处可见,上课铃声、喇叭、红绿灯、警报、闹钟、电话铃声.....等等。我们知道即使信号没有产生,我们也知道该如何处理它,比如,红灯我们就该停,电话响就该接....。那是因为在第一次遇到他时,我们就记住了它的特征及其处理方法,所以我么就知道,如果产生这种信号该怎么办。那么总结如下:生活中:① 信号的产生的随机的;② 信号没有产生时,我们也知道它的作用;③ ...原创 2019-01-24 09:24:31 · 401 阅读 · 0 评论 -
【Linux】信号的捕捉(捕捉过程及捕捉函数)
信号的捕捉过程我们现在知道了信号在产生之后不是被立即处理的,而是在合适的时候才进行处理,那么什么时候是合适的时候呢?信号又是怎么被捕捉的呢?合适的时候是指:从内核态切换为用户态时进行信号的捕捉。在Linux下,作为普通用户的我们会发现我们有时候会有一些文件不能进入、有一些文件不能创建、有一些信息不能看、我们创建的进程总数总是有上限的,我们访问不了硬件层面的 东西,感觉自己被限制了,其实...原创 2019-02-27 14:15:12 · 3789 阅读 · 0 评论 -
【Linux】进程间通信 ----- 共享内存(IPC资源)
system v 共享内存每个进程都是独立的,当进程运行起来时,都有一个PCB,一个虚拟地址空间,一个页表,一个对应的物理内存,页表将每一个进程的PCB映射到物理内存的不同区域,保证了它们的独立性。但是如果两个页表都分别把进程虚拟地址空间的一些内容映射到物理内存的同一块区域,那么这样就实现了两个进程看到同一份资源了,而这一块公共的区域就叫做共享内存!如图所示:因为可以减少进程间数据拷贝...原创 2019-01-21 14:08:40 · 486 阅读 · 0 评论 -
【Linux】再谈文件描述符之缓冲区
因为IO相关函数与系统调用接口对应,并且库函数封装系统调用,所以本质上,访问文件都是通过fd访问的。所以C库当中的FILE结构体内部,必定封装了fd。往标准输出写入有三种方法:printf(str1);//C库函数 fwrite(str2,1,strlen(str2),stdout);//C库函数 write(1,str3,strlen(str3));//系统调用来段代码研究下...原创 2019-01-15 16:51:19 · 1363 阅读 · 0 评论 -
【Linux】彩色进度条的实现
在写进度条之前,我们首先应该知道以下几个小问题: 1.fflush 在实现的时候,需要每次输出完使用fflush(stdout)将缓冲区刷新,以便下一次的输出。2.’\r’和 ‘\n’的区别:(1):回车用’\r’表示,表示的是回到这行的起始位置。(2):换行用‘\n’表示,表示的是换行到下一行。所以我们在实现时用的是’\r’,才能实现进度条的效果。3.如何彩色输出:...原创 2019-01-05 18:33:24 · 23363 阅读 · 1 评论 -
【Linux】linux下好玩的命令
1、yes命令,输出很多个y,可以用来对付选择很多y/n的应用。2、banner命令,打印字符标题,就是用字符拼出大字来:3、ddate命令,把日历转换成其他的什么历:4、fortune命令,随机输出一句话,或者是一句英文名言,或者是一首唐诗宋词来,如果没有唐诗宋词,那就需要用fortune-zh5、cal 9 1752,打印日历,但是这个月非常有意思(在9月2日后居然...转载 2019-01-07 14:40:23 · 682 阅读 · 0 评论 -
【Linux】shell及其运行原理
Linux严格意义上来说是一个操作系统,但是我们的用户是无法直接与操作系统对话的,而是通过shell来使用。shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。当从shell或其他程序向 Linux传递命令时,内核...原创 2019-01-12 19:00:17 · 2679 阅读 · 0 评论 -
【Linux】模拟实现一个 mini_shell
在学习了进程等待和程序替换及其相关函数之后,就可以实现一个我们自己简单mini_shell了。shell及其运行原理:https://blog.csdn.net/Miss_Monster/article/details/86370076 shell工作的基本过程1.读取用户由键盘输入的命令行。2.分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )内部...原创 2019-01-12 19:50:09 · 453 阅读 · 0 评论 -
【Linux】文件相关系统调用接口(IO)
早期在写C语言接口的时候,我们可以通过fopen来打开一个文件,下面这段两段代码为例:hello.c写文件 1 #include <stdio.h> 2 #include <string.h> 3 int main () 4 { ...原创 2019-01-13 10:29:22 · 657 阅读 · 0 评论 -
【Linux】程序中 umask(0) 的含义
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限"补码",而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bas...原创 2019-01-13 10:36:34 · 2712 阅读 · 0 评论 -
【Linux】快速认识文件描述符及其分配规则;你不懂的 inode 是什么?
文件描述符fd通过对open函数的学习,我们知道了文件描述符就是一个小整数,可以再次用代码验证一下。用系统调用函数open打开了四个文件,然后打印他们的文件描述符fd: 1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/stat.h> 4 #include &...原创 2019-01-13 15:08:46 · 1100 阅读 · 0 评论 -
【Linux】教你三分钟学会重定向
重定向是什么在学习了文件描述符及其分配规则(https://blog.csdn.net/Miss_Monster/article/details/86411039)之后,了解到操作系统总是找到当前files_struct的指针数组中没有被使用的最小的一个下标,作为新的文件描述符。在代码的结尾我们发现,文件可以通过close来关闭,既然可以关闭,那如果我将标准输出1关闭,再打开myfile文件,...原创 2019-01-14 09:04:05 · 482 阅读 · 0 评论 -
【Linux】信号的处理以及信号集操作函数
首先来再次看看这张图:sigset_t从上图来看,每个信号只有一个bit的未决标志,非0即1,不记录该信号产生了多少次,阻塞标志也是这样表示的。因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而在未决信号集中“有效”和“无效”的含义是该...原创 2019-02-26 15:44:45 · 508 阅读 · 0 评论 -
【Linux】进程间通信 ---- 管道
一、进程间通信 进程间通信的本质它的本质就是让不同的进程看到一份公共的资源(内存的一段内存区域),该资源只能由第三方提供,即操作系统直接或者间接提供。进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 进程控制...原创 2019-01-20 14:51:41 · 293 阅读 · 0 评论 -
【Linux】进程的控制 ---- 创建、终止、等待、替换
进程创建(fork)进程创建不只有fork,其实bash跑一个程序也是创建一个进程,这里只说fork。1.初识 fork函数在Linux当中,fork函数是一个非常重要的函数,它能从已经存在的进程中创建一个新进程。新进程为子进程,原进程就是父进程。#include <unistd.h>pid_t fork(void);返回值:子进程中返回0,父进程返回子进程的id...原创 2019-01-18 20:54:24 · 309 阅读 · 0 评论 -
【Linux】vim常用命令之多行注释和多行删除
在vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率。多行注释 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2. 在行首使用上下键选择需要注释的多行; 3. 按下键盘(大写)“I”键,进入插入模式; 4. 然后输入注释符(“//”、“#”等); 5. 最后按下“Esc”键。 注:在按下es...原创 2019-04-12 09:10:12 · 4180 阅读 · 0 评论