Linux
文章平均质量分 52
XV_
喜欢读书,热衷于探究本质,热爱技术,终身学习,不断成长。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
VirtualBox下Ubuntu系统磁盘扩容
例如这是我的Ubuntu系统,快照对应的vdi文件,如果不知道对应哪个,就新建一个快照,跟新建之前对比,多出来的就是了。注意:中的要改成,再把它的大小修改成和刚刚一样的大小。然后你会在virtualbox的中,看见对应的磁盘大小改变了。这里我们扩容了虚拟磁盘的大小,但是Ubuntu系统并不会自动扩容,你还需要为其分配空间。你需要安装软件,。打开软件这里的未分配空间,就是我们扩容的大小,你要将其分配。选中要扩容的分区,右键单击,再扩容即可。之后确认。先卸载磁盘,让其停止运行,之后扩容,之后再挂载磁盘。而原创 2023-04-14 20:33:37 · 2933 阅读 · 0 评论 -
基于IntelliJ IDEA和Ubuntu的Chisel开发环境搭建
Chisel IDEA环境搭建原创 2022-03-16 17:12:20 · 2012 阅读 · 0 评论 -
diff and colordiff on Ubuntu
在Ubuntu中使用diff来对比文件差异,但是不是很好用,尤其是着色方面,用起来很麻烦,因此可以安装colordiff。我们有两个文件file1和file2,使用命令colordiff file1 file2 -y -B -W 140就可以对比文件差异,不同的部分会被着色。file1有,file2没有的,标记红色file1没有,file2有的,标记绿色两者都有,但是内容不完全一样的,标记蓝色这是最快捷的方式!也可以使用colordiff file1 file2可以得到标准的原创 2022-03-16 16:03:04 · 2009 阅读 · 0 评论 -
Ubuntu停止维护版本的软件源配置和系统升级方法
这里以Ubuntu 20.10版本为例(当前是2022.2.14,该版本已经停止维护),我们现在需要正常使用该版本,并且期待升级到21.10版本,我们需要配置正确是软件源升级该版本配置正确的软件源配置国内镜像源我们一般在国内会采用清华大学的软件源,不过可惜的是,清华的软件源没有提供old-released版本(笔者反正没找到…),也就是一旦版本停止维护,我们就不能用该镜像源进行update和upgrade了。我们可以使用中科大的镜像源,或者南京大学的也行。我们将/etc/apt/sourc原创 2022-02-14 20:51:26 · 4194 阅读 · 7 评论 -
VirtualBox Ubuntu个人配置
VirtualBox启用嵌套VT-x/AMD-V原创 2022-02-09 00:23:40 · 1087 阅读 · 0 评论 -
Linux环境变量 set env export区别
参考链接How to Set Environment Variables in Linuxset他能够显示当前shell的环境变量它针对的对象是当前shell,如果关闭了就没了!直接使用set --help查看就可以。env显示当前用户的环境变量,针对的当前登录的用户export它能够使得变量被导出为用户环境变量,或者显示被导出为用户环境变量的变量。可以设置临时的:关了shell就没了永久的:这个也分范围当前用户的整个系统的对应的还有unset可以删除环境变量.原创 2022-02-04 19:52:46 · 1413 阅读 · 0 评论 -
gdb调试的几点提示(1)
GDB debuggerExamining MemoryContinuing and SteppingHow to translate a virtual memory address to a physical address?s和n是C语言的下一步si和ni是汇编语言下一步gdb能够查看的都是虚拟地址,不能查看物理地址,应用程序都不能查看物理地址,虚拟地址到物理地址的转换很复杂,需要OS和硬件系统配合来完成。最后你需要知道,x /i $eip会显示eip对应的指令(指令编码),它不是显.原创 2021-05-17 15:09:43 · 1113 阅读 · 0 评论 -
函数调用堆栈
基于孟宁老师的Linux内核分析 1 int g(int x){ 2 int y = x + 3; 3 return y; 4 } 5 6 int f(int x){ 7 int z = x + 10; 8 return g(z); 9 } 10 11 int main(){ 12 int a .原创 2021-05-17 15:02:25 · 531 阅读 · 0 评论 -
vim进行行内某部分的复制剪切粘贴
ctrl + v使用方向键选中你要复制的部分按d(剪切)或者按y(复制)再移动到你的目标位置,按p粘贴(在正常模式下才行,如果不是,先按esc)这个过程与你操作word文档的复制粘贴一样!只不过不能用鼠标罢了。不过这个操作还可以多行多列选中,也就是选中一块区域进行操作,看下图的示例...原创 2021-05-13 09:00:30 · 3511 阅读 · 0 评论 -
vim多列操作--插入/删除
插入How to insert text at beginning of a multi-line selection in vi/VimVim Commands删除ctrl + v使用上下左右键选中一片区域按d删除原创 2021-05-11 14:55:08 · 2130 阅读 · 0 评论 -
正则表达式特别需要注意的点:“空“字符的匹配
在正则表达式中,[...]代表1个字符,不管里面有多少字符,最终这个东西的结果都是1个字符。对于表达式[^a]表达的匹配除了a之外的字符,并且是1个字符。需要注意的是,有些特殊字符是不会被匹配的。我们看一个示例,对于txt文件testRegularExperxx.txt aaa bbb对于该文件,输入命令grep -n '[^a]' testRegularExperxx.txt得到的结果是:你会发现,对于看起来的“空行”的处理似乎是不一样的,为什么呢?仔细看看文件,原创 2021-05-07 09:16:17 · 2560 阅读 · 0 评论 -
find command基本使用
find命令通常用于根据文件名查找文件,这是最基本用法。find [path] -name/-iname [filename]path写要查找的路径,自动递归查找filename写文件名,可以使用通配符*还有其他什么的表达式具体细节请man find查阅文档。...原创 2021-05-07 08:19:06 · 561 阅读 · 0 评论 -
C语言不能对全局变量使用malloc函数
reference:Malloc function (dynamic memory allocation) resulting in an error when it is used globally#include<stdio.h>#include<string.h>#include <stdlib.h>char *y = (char *)malloc(40); // gives an error hereint main(){ strcpy(.原创 2021-05-06 21:59:59 · 3041 阅读 · 0 评论 -
Linux进程间通信:共享内存与管道
references:[1] IPC through shared memory[2] Inter Process Communication (IPC)[3] https://www.geeksforgeeks.org/pipe-system-call/[4] watch command in Linux with Examples参考链接1和2是介绍了共享内存IPC的简单原理和相关系统调用的使用参考链接3是介绍了管道通信的内容参考链接4介绍了如何实时查看共享内存watch -d 'i.原创 2021-05-05 16:44:54 · 216 阅读 · 0 评论 -
wait系统调用
reference:Wait System Call in C只强调几点,剩下的直接看参考链接内容就好了,不是偷懒,而是里面内容写的很好了,没必要再写一遍了,这种东西就是单纯的系统调用而已,理解了功能,就完事了,没啥好说的。如果父进程等待1个子进程,使用wait(NULL)就行如果等待多个子进程如果不需要指定特定进程,使用多个wait(NULL)就行如果需要指定,则需要使用waitpid(pid, &stat, option),对于option,有两个选项,一个是0,就相当于是wa.原创 2021-05-05 16:31:50 · 620 阅读 · 0 评论 -
fork创建多个子进程
references:[1] how to create two processes from a single Parent[2] fork() in C[3] linux中fork同时创建多个子进程的方法fork的本质,就是复制,把当前进程复制一份,然后两个进程并发地执行fork后面的语句,区别就是,子进程的fork返回值是0,父进程的fork返回值是子进程的pid,这也是区分父进程和子进程的方法,至于其他的内容,在fork之前的东西两个进程的一样的。给出一个父进程和一个子进程的模板in.原创 2021-05-05 16:19:24 · 6312 阅读 · 1 评论 -
UNIX哲学
参考: 对比Linux与Windows使用Linux想要做某些事情的时候,就拆开想,想想我需要哪些功能,需要哪些工具,依次怎么执行,然后用管道建立连接,让数据依次流过不同的工具,从而得到最终结果。就像污水处理厂那样(高考化学哈哈哈)。...原创 2021-05-05 15:22:05 · 141 阅读 · 0 评论 -
C语言中信号函数(signal)的使用
先来简单谈谈C语言中的信号(signal)首先,signal是C语言库中的函数,它实际上是软中断,也就是软件发出的终端,本质来说,类似于int n。对于接收到该软中断信号的进程,就会停下手头的工作,转而去执行信号处理程序 signal handler。对于这一点,是与硬件中断的方式类似的。与硬件中断类比学习会更容易!因此,我们需要知道的是有哪些可用的软中断:就像硬件的除法零中断、溢出中断、外设中断…软中断处理程序有哪些:就像中断服务程序(位置信息在idt、ivt)默认的软中断服务程序:系统原创 2021-05-05 15:16:27 · 4630 阅读 · 0 评论 -
gdb tui的使用
[1] GDB Text User Interface [2] GDB Text User Interface简单来说,进入gdb之后,使用ctrl + x 2就足够了。其他细节请参考上述链接,选一个就可以。原创 2021-05-05 12:12:08 · 459 阅读 · 0 评论 -
gdb 10.2的安装
参考[1] GDB-10.2[2] README for GDB release个人系统 Ubuntu20.10。注意gdb10.2需要c++11语法,需要安装g++下载安装包wget https://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.xz解压缩tar -xvzf gdb-10.2.tar.xz进入解压之后的目录mkdir buildcd build配置,安装tui mode,../configure --enable-tui此处注意,可能会提示你.原创 2021-05-05 12:07:48 · 2388 阅读 · 0 评论 -
Linux安装Ncurses库
参考:How To Install Ncurses Library In Linux针对Ubuntu说明一下:wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz,至于最新版本,自己看官网,修改一下版本号即可。tar xzf ncurses-6.2.tar.gzcd ncurses-6.2./configure --prefix=/opt/ncursesmakesudo make install...原创 2021-05-05 12:02:03 · 2087 阅读 · 0 评论 -
使用gdb调试多进程程序、同时调试父进程和子进程
参考:[1] GDB debugging multi-process programs[2] Debugging programs with multiple processes根据这两篇参考链接,完全可以实现使用gdb同时调试父进程和子进程。接下来说明一下可能遇到的坑gdb8.1版本有bug,设置完set detach-fork-on off,执行fork之后,切换到子进程,会遇到不能添加断点等问题gdb9.2版本也有bug,进程切换的时候,会遇到fork.c文件缺失等问题,不过也不影响.原创 2021-05-05 11:53:58 · 910 阅读 · 0 评论 -
信号量SIGCHLD的使用,如何让父进程得知子进程执行结束,如何让父进程区分多个子进程的结束
本教程基于 Ubuntu 20.10 gcc 10.2.0. 示例程序如果不能正常编译和执行,说明您系统和工具版本与我的不匹配,请自行查阅资料。0 概述先给出该信号的描述:SignalValueDescriptionSIGCHLD17Child status has changed (POSIX). Signal sent to parent process whenever one of its child processes terminates or stops.Se原创 2021-05-05 10:28:34 · 5417 阅读 · 0 评论 -
vim配置文件
" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by" the call to :runtime you can find below. If you wish to change any of those" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim" will be overwritten ev原创 2021-05-03 21:42:07 · 312 阅读 · 0 评论 -
Linux 0.11 内核解析:中断相关(1)asm.s文件中断处理分析
0 源代码有两个版本的,一个是带中文注释,Intel格式的;一个是不带注释是AT&T格式的。Linux 0.11 中文注释版Linux 0.11 源码,基于《Linux内核完全注释》赵炯1 asm.s 文件我们先假设该文件处理的中断是无特权过渡的情况(具体是不是暂时不知道)。我们看一下,当中断发生且被检测到之后,硬件做了什么。我们可以看到,中断被检测到之后,一些必要的信息被压栈了。在80386手册中提到,中断发生之后,一些必要的,为了中断程序结束之后返回原程序继续执行的信息,会被原创 2021-04-19 10:44:31 · 804 阅读 · 0 评论 -
IA-32 Architecture: the function of segment regitster(CS DS SS ES)
对于IA-32架构,与8086不同,段寄存器不再是像以前一样,直接作为段基址,因为32位的寄存器直接就可以表示4GB大小,不需要再偏移,因此段寄存器的含义也发生了相应的变化。在IA-32架构里,段寄存器是间接给出段地址的。段寄存器作为选择子Selector,它就相当于一个指针,指向的地方是段描述符 Segment Descriptor,这个段描述符存储的是段基址,然后还有其他的寄存器和立即数提供偏移地址。而这一点,适用的是32位系统的保护模式。...原创 2021-04-10 19:56:02 · 161 阅读 · 0 评论 -
Linux的ext4文件系统学习笔记
补充:设备独立性Linux中,设备驱动以文件形式表示,用户操作逻辑设备就是操作文件,而不是具体的物理设备,也就是说,用户操作的是功能,是黑箱,而不是真正的实体。APP操作的都是逻辑设备,而逻辑设备到物理设备,是系统自动完成。就像虚拟地址由MMU转换为物理地址。文件系统、分区和挂载Linux有一个完整的文件系统,文件系统下的不同目录,可以分布在不同的磁盘分区,而联系的方式就是挂载。同时,挂载方式也比较自由,比如根目录 /挂载在分区1,然后根目录下的子目录 /home可以挂载在分区2.ls与du原创 2021-03-06 16:58:58 · 574 阅读 · 0 评论 -
安装win10和Linux双系统的个人经验
使用easy uefi误删除win10引导文件这个时候,网上教程有各种方式,我直接使用了一种最简单的,这个方法网上都没有提到过。注意:发现引导文件删了,千万不要关机,否则再想开机恐怕只能重装系统了。我们直接使用win10自带的升级程序,让它来自动检测和更新当前的win10,亲测可用,windows boot manager自动补上了。下载Windows10链接,按照官网的方法,直接更新升级当前的win10即可,作者当时win10正好有更新,如果你的win10已经最新,就不知道有没有用了。初学者,U原创 2021-03-06 15:43:04 · 960 阅读 · 0 评论 -
tmux学习笔记
参考学习链接我们需要理解几个重要的概念session 回话window 窗口pane 窗格window我们打开的一个terminal就是一个window.而打开的这个window,也就是打开了一个session,打开window,session开始;关闭window,session结束,也就是说,在该窗口下运行的任何进程,只要是窗口关闭了,进程都结束了,不能实现session后台运行。这也是我们基本的特点,session和window是绑定的,其中session启动的进程也是绑定的。原创 2021-03-06 15:24:49 · 436 阅读 · 0 评论 -
gdb学习笔记
参考学习链接GDB 是一个工具,他是调试工具,能够用于程序的调试。我们在生成程序的时候,可以选择debug模式release模式前者会比后者大,因为需要插入调试信息,这些信息就是调试工具需要的二进制代码(Debugging Symbol),插入到我们写的程序中,以便于我们使用基本的调试命令,去查看内存、寄存器,打断点…调试啥的?就是找错的!找到error发生的原因并且解决它。计算机运行程序会出现crash,然后产生core dump,生成对应的core file。我们就可以使用gdb来原创 2021-03-06 14:51:43 · 140 阅读 · 0 评论 -
【Linux】Ubuntu 18下安装Vim自动补全插件YouCompleteMe(可高速下载安装)
前言本文写于2020年10月,如果你多年后看见这篇文章,方法可能已经失效,但是请牢记,尽量下载你所处时代的最新版本的软件,会减少很多麻烦。摆正心态即便按照本文操作,由于你的系统状态和我的不一样,你依然可能安装失败,这个时候你需要自己慢慢使用Google搜索寻找答案。安装使用的是 全新的Ubuntu 18.04 LTS,刚刚安装好系统,然后进入终端的root下操作。注意,系统版本非常重要!对应的是vim8和Python3.6.1 安装vim 和 git这个很简单,我们只需要输入vim,系统就会提原创 2020-10-09 17:13:52 · 6799 阅读 · 10 评论 -
【Linux】Ubuntu下进行C语言编程
0 基础命令介绍最基础的Linux终端命令。su - root:切换到root用户(不用也可以)ls:查看当前目录位置cd:切换目录利用这几个命令,我们先切换到某个文件夹su - root和lscd其中jht是我的个人账户名,你的可能不一样。另外Tab键可以自动补全。创建一个文件夹(名称为test)mkdir test使用cd test/进入文件夹,创建一个C语言文件touch p1.c1 Vim的基础命令之前我们创建好了一个C语言文件,现在,我们要使用vim编辑器进原创 2020-10-08 14:33:07 · 10481 阅读 · 0 评论 -
【Linux】编译C语言文件(-o -lpthread)
对于一个一般的程序,直接使用gcc <C语言文件名> -o <编译后生成的文件名>即可,例如以下程序:// cpu.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(int argc,int *argv[]){ if(argc != 2){ fprintf(stderr,"need parameter\n"); ex原创 2020-10-07 11:32:54 · 2590 阅读 · 0 评论
分享