![](https://img-blog.csdnimg.cn/20210303165709297.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux系统编程
文章平均质量分 71
Linux
呆萌宝儿姐
CSDN专家博主、阿里云开发者社区专家博主、51CTO社区专家博主、360书馆认证博主、知乎掘金B站等平台受邀作者。
如遇开发、程序等需求,博客首页下拉加入公众号,私信博主
展开
-
设置centos系统语言设置为中文
如果有就跳过下一步的安装。原创 2022-09-14 16:01:59 · 2662 阅读 · 0 评论 -
基于C++实现的文件系统(简易版——内存空间操作)
目录的创建和删除与文件的操作大致相同,创建目录时,目录表项的startBlock不是FCB而是指目录的存放位置,而且还要自动为其添加多一个父目录项“…系统用char[]数组作为位示图保存了每一个盘块的使用状态,而且采取了连续分配的方式,对于目录表和FCB都规定直接使用一个盘块,文件又是规定好大小不能扩展的,所以实现起来减少了很多FAT,索引表,那些离散分配所需的连接方式,单纯练手的话,还是十分简易的。文件管理:是系统对于文件和目录层次的管理的,规定了FCB结构,目录结构等,包含了对接口的实现。原创 2022-11-01 13:38:10 · 2769 阅读 · 4 评论 -
CentOS 7.6安装 nginx
文章目录一键执行安装分步安装1.依赖项和必要组件2.下载安装nginx3.解压4.编译配置5.创建全局命令常用命令:一键执行安装一键执行脚本,包括下面所有步骤语句:yum install -y make cmake gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel && wget http://nginx.org/download/nginx-1.12.2.tar.gz && tar zx原创 2022-01-22 21:24:23 · 5786 阅读 · 0 评论 -
安装MySQ报错 warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-8.0.
报错warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-8.0.28-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEYRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysqlThe GPG keys listed for t原创 2022-01-19 22:11:49 · 6109 阅读 · 7 评论 -
CentOS 7.6安装 jdk1.8
文章目录yum安装1、搜索jdk安装包2、下载jdk1.8,下载之后默认的目录为: /usr/lib/jvm/3、配置环境变量yum安装1、搜索jdk安装包yum search java|grep jdk2、下载jdk1.8,下载之后默认的目录为: /usr/lib/jvm/yum install java-1.8.0-openjdk查看验证安装是否成功,运行下面语句:java -version3、配置环境变量JDK默认安装路径/usr/lib/jvm编辑/etc/profi原创 2022-01-19 21:53:53 · 2735 阅读 · 0 评论 -
CentOS 7.6安装 Redis-6.2.5
文章目录安装redis-6.2.5redis启动方式一:方式二(推荐):安装redis-6.2.5执行下面语句# 安装到指定文件夹cd /usr/local/# 获取redis安装包wget https://download.redis.io/releases/redis-6.2.5.tar.gz# 解压tar -zxvf redis-6.2.5.tar.gz# 改名字mv redis-6.2.5 redis# 进入redis文件夹cd redis# 执行make命令make原创 2022-01-19 22:54:21 · 2208 阅读 · 0 评论 -
CentOS 7.6安装 MySQL8.0.25
文章目录删除旧版本安装MySQL8.0.25安装修改密码删除旧版本查看是否有安装过mysqlrpm -qa | grep -i mysqlfind / -name mysql有目录就rm -rf删除rpm -e mysql80-community-release-el7-3.noarch 安装MySQL8.0.25安装配置Mysql安装源sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.no原创 2022-01-19 22:27:40 · 1616 阅读 · 0 评论 -
CentOS 7.6安装 MongoDB 5.0.2
文章目录1、选择下载地址2、下载安装3、配置环境变量4、建立日志、数据文件夹、配置文件夹5、启动MongoDB6、连接1、选择下载地址进入下载官网 https://www.mongodb.com/try/download/community选择右侧MongoDB Community ServerVersion:5.0.2(current)Platform:RedHat / CentOS 7.0Package:tgz点击Copy复制安装位置:/usr/local/mongodb2、下载安装原创 2022-01-19 22:45:34 · 2480 阅读 · 0 评论 -
Linux 命令解析器
文章目录命令解析器概念命令解析器的作用:常用的命令解析器:shell -- Bourne Shellbash -- Bourne Again Shell查看当前系统所使用的shell查看当前系统下有哪些shell命令解析器概念首先我们要知道:什么是命令解析器?shell就是命令解释器shell解释器是一个程序。是的,就是一个程序,而且,它就在我们的身边。在linux系统中,当我们输入用户名和密码登陆之后,我们就开始执行一个shell解释器程序,通常是 /bin/bash,当然也可以是别的,比如/b原创 2021-10-30 15:01:23 · 3489 阅读 · 0 评论 -
Linux 静态库和共享(动态)库的创建与使用详解
文章目录Linux 静态库和共享(动态)库库的介绍使用库有什么好处库制作完成后, 如何给用户使用静态库(static library)静态库的制作Linux 静态库和共享(动态)库库的介绍库是二进制文件, 是源代码文件的另一种表现形式, 是加了密的源代码;是一些功能相近或者是相似的函数的集合体.使用库有什么好处提高代码的可重用性, 而且还可以提高程序的健壮性;可以减少开发者的代码开发量, 缩短开发周期.库制作完成后, 如何给用户使用头文件—包含了库函数的声明库文件—包含了库函数的代原创 2021-12-20 11:25:20 · 3300 阅读 · 1 评论 -
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
文章目录解决方法:一、解锁1、杀死进程解锁2、强制解锁二、更新软件库三、重新启动系统解决方法:一、解锁1、杀死进程解锁杀死之前的相关进程显示使用apt-get 的命令ps -e|grep apt-get显示信息12836? 00:00:01 apt-get然后执行sudo kill 128362、强制解锁sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock二、更新软件库运行这个更新一下软件库也行s原创 2021-11-25 16:26:56 · 12020 阅读 · 3 评论 -
我的Ubuntu初始化配置
安装C++的MAN手册:sudo apt-get install manpages manpages-dev manpages-posix manpages-posix-devsudo apt-get install libstdc++-10-doc安装SQlite3:sudo apt install sqlite3安装Fcitx:sudo apt-get install im-switch libapt-pkg-perl fcitx fcitx-table-wbpysudo apt --原创 2021-11-21 20:52:18 · 1970 阅读 · 0 评论 -
linux-0.11 文件系统介绍
文章目录1.简介2.基础知识2.1 文件系统结构2.2 i-node节点a.寻找hello.txt文件b.寻找/mnt/hello.txt文件2.3 高速缓冲区3.内核重要函数分析3.1 内核同步函数3.1.1 wake_up()与sleep_on()3.1.2 锁lock_buffer()和unlock_buffer()3.2 任务调度函数schedule()3.3 复制页表函数copy_page_tables()3.4 复制进程信息 copy_process()3.5 execve()4.基本概念4.1转载 2021-11-15 15:19:05 · 817 阅读 · 0 评论 -
Ubuntu 安装VMWare Tools
Ubuntu 安装VMWare Tools1、在VMWare菜单VM下,点击虚拟机,点击安装VM Tools(当你安装过会显示重新安装VM Tools)。系统自动加载VMWare Tools镜像,此时在ubuntu桌面能够看到,如下图所示。双击打开光盘,里面有文件VMwareTools-8.8.2-590212.tar.gz,右键copy到桌面。如下图所示。2、解压输入命令(后面是你对应版本的Tool,打上V摁下tab就出来了)sudo tar -zxvf VMwareTools-X.X.原创 2021-11-14 09:13:23 · 23723 阅读 · 3 评论 -
Linux makefile的基本使用
文章目录gcc 输出文件类型makefilemakefile好处makefile规则makefile执行顺序makefile变量makefile变量定义的三种形式makefile变量引用通配符:% * ?makefile示例gcc 输出文件类型gcc 是用来编译代码的编译器编译完后有一些常见的输出文件,他们是:后缀名含义.a静态库(文档).c需要预处理的C语言源代码.hC语言源代码的头文件.i经过预处理后的C语言源代码.o目标文件(经过汇编产生)原创 2021-11-02 21:34:30 · 3715 阅读 · 0 评论 -
Linux gdb调试工具应用详解
文章目录gdb调试工具gdb介绍生成调试信息启动gdb显示源代码设置断点简单断点—当前文件多文件设置断点---其他文件查询所有断点条件断点维护断点调试代码查看变量的值查看运行时变量的值自动显示变量的值查看修改变量的值gdb调试工具gdb介绍GDB(GNU Debugger)是GCC的调试工具。GDB主要帮忙你完成下面四个方面的功能:启动程序, 可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的断点处停住。(断点可以是条件表达式)当程序被停住时, 可以检查此时你的程序中所原创 2021-11-02 21:11:09 · 2350 阅读 · 0 评论 -
Vim 修改tab为4个空格
修改配置如果要修改全局Vim的配置vim /etc/vim/vimrc但是不建议这么做,可以只修改当前用户的Vim配置vim ~/.vimrc在配置文件中添加以下参数在文件末尾加上下面代码,建议使用第二种第一种配置参数set ts=4set sw=4第二种配置参数set ts=4set expandtabset autoindent建议使用第二种,具有兼容性修改已保存文件,再使用vim就OK了...原创 2021-11-02 17:52:05 · 2270 阅读 · 0 评论 -
vim 自动添加文件的作者、时间、版本等信息
终端输入vim ~/.vimrc在文件末尾添加如下内容(记得创建者那换成自己的名字),然后保存退出,再使用vim创建源文件时就能自动加了" 当新建 .h .c .hpp .cpp .mk .sh等文件时自动调用SetTitle 函数autocmd BufNewFile *.[ch],*.hpp,*.cpp,Makefile,*.mk,*.sh exec ":call SetTitle()"" 加入注释func SetComment() call setline(1,"/*===原创 2021-11-02 17:46:21 · 2577 阅读 · 0 评论 -
Ubuntu 更改语言为中文
文章目录步骤总结步骤1 点击System Settings2 点击Language Support3 点击install4 输入密码5 install language安装语言选择chinese(simplified)简体中文,并开始按照下面顺序进行安装注意:里面有一个坑,勾选简体中文的同时把english也要勾选,否则language下面的列表只有汉语(中国),导致你以为把汉语(中国)已经拖拽到最顶部,实则是english在顶部,导致重启结果系统语言还是英文。7 关机重启,点原创 2021-11-02 16:21:10 · 10677 阅读 · 2 评论 -
安装VM虚拟机再安装Ubuntu图解步骤
一、准备安装包我给大家准备了百度网盘链接:https://pan.baidu.com/s/1_SY7RWBGy3RjvMZRkE1A9Q 提取码:uhpv–来自百度网盘超级会员V5的分享二、安装虚拟机安装界面下一步我接受下一步下一步下一步baidu一下,这个vm的密钥双击打开vm使用密钥继续不要在系统盘,在文件盘中定义一个文件夹“liunx ubuntu”,专门用来存放linux的一些内容然后点击如下按钮下一步下一步在浏览中找到这个文件继续点击原创 2021-11-02 16:19:09 · 2584 阅读 · 0 评论 -
Linux下的目录结构
文章目录Linux系统的目录结构Linux系统的目录结构Linux系统的目录结构是一个倒立的树状结构, 根目录用/表示,对比windows目录结构理解linux的目录结构。4.2linux下主要目录介绍/bin: binary,二进制文件,可执行程序,shell命令如: ls , rm , mv, cp等常用命令/sbin: s是Super User的意思,这里存放的是系统管理员使用的系统管理程序。如ifconfig, halt, shutdown, reboot等系统命令/dev原创 2021-10-30 15:26:01 · 2669 阅读 · 1 评论 -
gcc编译的四个阶段解析
编译图参数意义:-E Preprocess only; do not compile, assemble or link;只预处理,不会编译、汇编、链接,生成.i文件-S Compile only; do not assemble or link;只编译,不会汇编、链接,生成.s文件-c Compile and assemble, but do not link; 编译和汇编,不会链接,生成.o文件-o Place the output into ;指定输出文件名为file,这个名称不能跟源文件原创 2021-10-14 11:30:23 · 3038 阅读 · 0 评论 -
Ubuntu安装vscode(图解)
推荐使用安装包法安装进入官网,点击download选择安装版本官网:https://code.visualstudio.com/选择dep下载。将安装包移至Ubuntu中(我是直接用Ubuntu浏览器下载的),在文件下载目录打开终端,运行下面语句(后面的是你下载的对应版本,输入开头code摁下tab全部名字就出来啦)sudo dpkg -i code_1.51.1-1549938243_amd64.deb之后就安装成功了...原创 2021-04-10 10:09:33 · 4518 阅读 · 1 评论 -
Linux本地套接字(IPC)
文章目录本地套接字代码serverclient本地套接字socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络原创 2020-10-30 23:22:27 · 4325 阅读 · 0 评论 -
Linux——多播(组播)
文章目录多播(组播)组播建立过程组播结构图代码serverclient多播(组播)组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。224.0.0.0~224.0.0.255 为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;224.0.原创 2020-10-30 22:38:47 · 5561 阅读 · 0 评论 -
Linux IO多路转接——UDP通信
文章目录UDP服务器C/S模型-UDPtcp与udp区别代码serverclientUDP服务器传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。相较于TCP而言,UDP通信的形式更像是发短信。不需要在数据传输之前建立、维护连接。只专心获取数据就好。省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证。因此,我们称U原创 2020-10-30 22:19:39 · 4223 阅读 · 3 评论 -
IO多路转接——epoll进阶
文章目录事件模型ET模式LT模式实例一:基于管道epoll ET触发模式实例二:基于网络C/S模型的epoll ET触发模式serverclient实例三:基于网络C/S非阻塞模型的epoll ET触发模式serverclient事件模型EPOLL事件有两种模型:Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据。Level Triggered (LT) 水平触发只要有数据都会触发。ET模式ET模式即Edge Triggered工作模式。如果我们在原创 2020-10-30 20:56:47 · 3948 阅读 · 0 评论 -
IO多路转接——select,poll,epoll
文章目录一、IO操作方式阻塞等待非阻塞, 忙轮询解决方案:第一种: select/pollselect服务器代码客户端代码第二种: epollepoll代码2. 什么是I/O多路转接技术:一、IO操作方式阻塞等待好处:不占用CPU宝贵时间缺点:同一时间只能处理一个操作,效率低非阻塞, 忙轮询优点: 提高了程序的执行效率缺点: 需要占用更多的cpu和系统资源一个任务多个任务解决方案:使用IO多路转接技术 select/poll/epoll第一种: select/poll原创 2020-10-29 21:55:16 · 4439 阅读 · 0 评论 -
网络编程——基本名词术语解析
文章目录路由(route)路由(名词)路由(动词)路由器工作原理路由表(Routing Table)路由条目缺省路由条目路由节点以太网交换机工作原理hub工作原理半双工/全双工DNS服务器局域网(LAN)广域网(WAN)端口MTU路由(route)路由(名词)数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。路由(动词)某个路由节点为数据包选择投递方向的选路过程。路由器工作原理路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径原创 2020-10-28 19:43:06 · 4272 阅读 · 0 评论 -
TCP状态转换图文解说
文章目录一、TCP状态转换图说明状态转换图二、名次解释2MSL半关闭补充:Linux命令:查看网络相关状态补充:端口复用FIN_WAIT2TIME_WAIT一、TCP状态转换图说明状态转换图TCP初始化时从CLOSED状态启动,通常根据是执行主动打开操作(客户端请求)还是被动打开操作(服务器接收请求),TCP将分别转换到SYN_SENT或LISTEN状态。正常情况下处于这两个状态下的两者由此建立了连接,这就是三次握手过程。左下方的FIN_WAIT_1、FIN_WAIT_2以及TIME_W原创 2020-10-28 19:30:46 · 4608 阅读 · 0 评论 -
Linux——服务器与客户端简单一对一通信
文章目录运用知识代码示例服务器客户端运用知识套接字相关函数socket()、bind()、listen()、connect()、accept()、recv()、send()、select()、close()https://blog.csdn.net/weixin_45525272/article/details/107732407atoiatoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *np原创 2020-08-01 17:10:38 · 4062 阅读 · 0 评论 -
Linux——多进程服务器与客户端并发通信
文章目录运用知识代码示例服务器客户端运用知识套接字相关函数socket()、bind()、listen()、connect()、accept()、recv()、send()、select()、close()https://blog.csdn.net/weixin_45525272/article/details/107732407atoiatoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *np原创 2020-08-01 17:10:22 · 5042 阅读 · 2 评论 -
Socket的基本操作函数socket()、bind()、listen()、connect()、accept()、recv()、send()、select()、close()
文章目录Socket的基本操作函数1、socket()函数1.1、 命名socket网络字节序与主机字节序:2、bind()函数3、listen()、connect()函数4、accept()函数5、recv()、send()等函数同步Socket的send函数的执行流程注意:同步Socket的recv函数的执行流程注意:6、select()函数理解select模型:select模型的特点:7、close()/shutdown()函数注:多进程中close操作解释close与shutdown的区别Soc原创 2020-08-01 16:53:44 · 11686 阅读 · 1 评论 -
Linux C语言实现简单爬虫
文章目录代码案例源代码应用知识hostent结构体gethostbyname()函数inet_pton和inet_ntopinet_ptoninet_ntopsockaddr_inin_addr结构htons 编辑socket()connect()sprintf函数format标签属性setsockopt代码案例爬到的HTML文件输入终端的参数源代码/************************************************************************原创 2020-07-28 16:34:15 · 4871 阅读 · 0 评论 -
Linux网络协议原理
文章目录网络协议术语简介组成要素工作方式层次结构层次划分常用协议TCP/IP协议NetBEUIIPX/SPX协议划分网络安全协议网络协议网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集 合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识.为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标 准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该 终端字符集的字符。当然,对于不相容终端,除了需变换原创 2020-07-28 11:14:01 · 4213 阅读 · 0 评论 -
Linux互斥锁及其应用
文章目录互斥锁1.1锁的创建1.2 锁操作1.3 锁销毁1.4互斥锁属性初始化互斥锁属性对象pthread_mutexattr_init 语法pthread_mutexattr_init 返回值销毁互斥锁属性对象pthread_mutexattr_destroy 语法pthread_mutexattr_destroy 返回值案例遇到问题解决方案1.在循环外加锁解锁2.在循环内加锁解锁(效率最高)互斥锁作用: 防止多线程对同一个数据同时进行操作在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以原创 2020-07-27 21:34:02 · 4546 阅读 · 0 评论 -
Linux处理机管理——线程
文章目录1.线程1. 线程的特点1)轻型实体2)独立调度和分派的基本单位。3)可并发执行。4)共享进程资源。2.如何创建线程pthread_create();参数注意事项示例1.线程线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进 程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更原创 2020-07-27 20:22:07 · 3693 阅读 · 0 评论 -
Linux内存介绍(局部性原理,段页)
文章目录内存1虚拟储存区2局部性原理3 虚拟地址 和 虚拟地址空间4内存管理方式5 页(了解)6 段页※(掌握)定义段页纠错小案例代码:说明各个变量存储的地方答案内存每一个要运行的程序,必须先进入内存然而,每一台计算机的内存容 量都是有限而宝贵的。存储管理的任务是方便用户使用存储资源,在有限的物理空间内使更多的用户进程高效地获得和使用尽可能多的存储空间,从而提高系统 的整体性能。现代操作系统中普遍采用基于虚拟存储器的概念来统一管理内存和外存,实现逻辑上的大容量存储空间。本节首先介绍虚拟存储器的基本概念原创 2020-07-27 19:10:29 · 3932 阅读 · 0 评论 -
Linux处理机管理——进程详解及代码分析
文章目录Linux处理机管理1.进程1.1.进程的概念1.2.进程的定义1.3.操作系统引入进程概念的原因:1.4.进程的特征2.CPU进程与线程的关系和区别小结:Linux如何查询进程3.如何创建一个进程代码实例补充:UID PID PPIDUIDPIDPPIDLinux处理机管理 操作系统管理功能的主要目标之一一就是提高处理机(CPU)的使用率,使它尽可能处于工作状态.在Linux系统中,提高处理机使用率的技术措施主要是多道和分时,处理机在进程之间切换,按照一定的规则轮流执行每个进程。对于单个处原创 2020-07-27 18:27:09 · 4152 阅读 · 0 评论 -
Linux下vim编辑器的基本操作
vim编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器;vi也是Linux中最基本的文本编辑器,vim就是vi的升级版。文章目录0、vi命令基本汇总1、下表列出命令模式下的一些键的功能:2、下表列出行命令模式下的一些指令1、vim的基本概念2、vim的基本操作3、命令行模式功能键1)插入模式2)从插入模式切换为命令行模式3)移动光标4)删除文字5)复制6)替换7)回复上一次操作(撤销)8)更改9)跳至指定的行4、Last line mode下命令简介0、vi命令基原创 2020-07-27 18:06:33 · 3568 阅读 · 0 评论