Linux学习
文章平均质量分 84
猿来如此~
心中所想,便是远方
展开
-
实时备份系统(项目)
实时备份系统:项目简介项目描述项目设计Windows下的客户端:1.数据管理模块:2.目录监控模块:Linux下的服务端:1.文件工具类:2.文件压缩模块:3.数据管理模块:4.非热点压缩模块:5.网络通信模块:项目源码项目简介包括一个Windows下的客户端和Linux下的服务端,Windows下的客户端负责将需要上传的文件进行上传,然后Linux下的服务端接收上传的文件并且进行热点判断,将非热点的文件进行压缩存储,并且在浏览器端还包括了文件的查看和下载功能项目描述项目的简单描述:1.在Wind原创 2020-09-02 15:21:41 · 440 阅读 · 0 评论 -
TCP的三次握手/四次挥手
原创 2020-04-09 22:01:32 · 114 阅读 · 0 评论 -
TCP/IP典型协议之UDP协议、TCP协议
UDP协议:UDP协议是传输层的典型协议,传输层主要负责应用程序之间的数据传输UDP的特性:无连接、不可靠、面向数据报无连接:只需要知道对端地址,不需要建立连接就可以直接发送数据不可靠:不保证数据能够达到对端面向数据报:无连接的、不可靠的、有最大传输限制的数据传输方式UDP协议格式:通过协议实现理解协议特性16位源端口和16位目的端口:负责数据传输,标识数据从哪里来,到哪里去16...原创 2020-04-09 22:00:14 · 565 阅读 · 1 评论 -
TCP/IP典型协议之HTTP协议
HTTP协议:HTTP协议是应用层的知名协议,应用层主要负责的是应用程序之间的沟通;HTTP协议又名超文本传输协议HTTP协议格式:首行:请求首行:请求方法 URL 协议版本响应首行:协议版本 响应状态码 状态码描述头部:由一个个的key: val形式的键值对组成,每个键值对以\r\n作为间隔,主要描述的是本次请求或者响应的重要信息空行:\r\n正文:数据1.请求方法:GE...原创 2020-04-09 21:26:37 · 222 阅读 · 1 评论 -
管道---进程间通信的手段
操作系统为用户所提供的几种进程间通信方式原因:进程间因为每一个进程都有一个虚拟地址空间,在保证了进程独立性的同时,却使得进程间无法直接通信因此需要操作系统来提供进程间通信的方式,并且因为通信场景不同,提供的方式也有多种进程间通信的方式:1.管道–用于进程间的数据传输本质:内核当中的一块缓冲区—通过半双工通信实现数据传输(半双工通信–可以选择方向的通信),通过让多个进程都能访问同一块缓冲...原创 2020-03-17 17:18:55 · 182 阅读 · 0 评论 -
Linux系统调用接口/文件系统/重定向/软硬链接文件/动态库静态库
1.标准库的IO接口:fopen/fwrite/fread/fseek/fclose这里着重介绍一个fopen接口:FILE * fopen(const char* filename,const char* mode)mode:"r/r+/w/w+/a/a+"1.w/w+:每次都会清空文件原有内容进行写入数据、如果原来没有这个文件的话,就会自行创建、加上+号就会变成可读可写的方式2.f...原创 2020-03-16 17:20:30 · 372 阅读 · 1 评论 -
Linux系统编程阶段思维导图
原创 2020-03-11 11:07:55 · 408 阅读 · 1 评论 -
程序替换:exec函数族
exec函数族:程序替换:就是替换一个正在运行中的程序,替换一个pcb在内存中的代码和数据程序替换使用的是exec函数族:int execl(const char * path,const char * arg,…)…为不定参数,以NULL结束int execlp(const char * file,const char * arg,…),函数放在指定的路径下*int execle(c...原创 2019-12-06 11:33:29 · 215 阅读 · 0 评论 -
将add\sub\mul\div等函数打包成静态,动态库,并使用
将add\sub\mul\div等函数打包成静态,动态库,并使用打包成静态库:使用这个静态库:打包成动态库:动态库的使用:原创 2019-12-02 10:51:57 · 176 阅读 · 0 评论 -
对之前编写的自主shell进行修改,使其支持输入/输出/追加重定向
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <ctype.h>#include <fcntl.h>#include <sys/wait.h>int main(){ w...原创 2019-11-26 20:22:49 · 92 阅读 · 0 评论 -
Linux中基础IO部分--open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体
int open(const char * pathname,int flages,mode_t mode)pathname:带路径的文件名mode:若有可能创建新文件则需要指定文件权限flags:选项参数必选项:O_RDONLY/O_WRONLY/O_RDWR 只读/只写/可读可写 --三种只能选择其一可选项:O_CREAT 文件不存在则创建新文件,存在则打开(使用这个必须用mod...原创 2019-11-26 20:16:16 · 176 阅读 · 0 评论 -
简谈Linux下的popen/system函数
popen:作用式启动另外一个进程去执行shell命令调用popen的函数为父进程,被启动的叫做子进程popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command的指令。popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。 随后进程便可利用此文件指针来读取子进程的输出设备或是写入到子进程的标准输入设备中返回值...原创 2019-11-23 00:10:03 · 181 阅读 · 0 评论 -
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递
#include <stdio.h> 2 #include <unistd.h> 3 #include <sys/wait.h> 4 void process_create(pid_t* pid,void* func,void * argv) 5 { 6 *pid = fork(); 7 if(*...原创 2019-11-22 23:58:43 · 105 阅读 · 0 评论 -
shell程序
编写自己的shell程序主要就是程序替换,使用了进程等待、进程终止、进程创建等进程控制的方法#include <stdio.h> ...原创 2019-11-22 23:45:54 · 343 阅读 · 0 评论 -
进程创建、进程等待、进程终止
1.进程创建:创建一个pcb,复制父进程中的信息pid_t fork(),相当于clone,但是子进程与父进程共用同一个虚拟地址空间,使用相同的页表pid_t vfork(),是一个阻塞函数,父进程创建后,这个vfork函数在父进程中并不会立即返回,会阻塞直到子进程exit或程序替换之后才会返回pid_t pid = fork();2.进程等待:等待一个子进程的退出,获取退出子进程的...原创 2019-11-22 23:41:30 · 175 阅读 · 0 评论 -
Linux task_struct 中各个字段的含义
Linux task_struct :总的一句话,这个结构体包含了进程的所有的信息。下面介绍几种状态的含义:1.TASK_RUNNING:表示进程要么正在进行,要么准备进行2.TASK_INTERRUPTIBLE:表示进程被阻塞,知道某个条件达成之后,进程就会变成TASK_RUNNING3.TASK_UNINTERRUPTIBLE:意义与TASK_INTERRUPTIBLE类似,除了不能...原创 2019-11-12 22:38:38 · 290 阅读 · 0 评论 -
使用代码模拟僵尸进程、孤儿进程
僵尸进程:起因:子进程先于父进程退出,退出后为了保存自己的退出原因,因此资源没有被完全的释放,操作系统此时通知并且允许了父进程来接收这个返回值,但是如果父进程不管的话,这块资源就没有被完全的退出,处于僵死状态,称为僵尸进程后果:资源泄露 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib...原创 2019-11-11 19:30:11 · 249 阅读 · 0 评论 -
常见的Linux进程调度算法
进程调度:在操作系统中,调度是指一种资源分配调度算法:就是根据操作系统的资源分配策略所规定的资源分配的算法1.先来先去服务:如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务(FCFS: first come first service)总是把当前处于就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长...原创 2019-11-11 15:44:47 · 408 阅读 · 0 评论 -
Linux下的安装yum与rpm的比较
rpmrpm相当于windows里面的控制面板中程序卸载与安装的功能,它是一个本地软件包的管理器。其常用的参数有rpm -qa |grep packagename 查询是否有本地包rpm -ivh packagename 安装某个包,并显示安装过程rpm -e packagename 卸载某个包yumman yum 如下:yum is an interactive, rpm ba...原创 2019-11-04 15:22:11 · 228 阅读 · 0 评论 -
Linux下的readelf命令以及进度条程序
readelf命令主要是为了查看ELF格式文件的内容的信息,后面加上可执行程序文件的filename加上-h,看的就是文件的头信息进度条程序:#include <stdio.h> 2 #include <unistd.h> 3 4 int main() 5 { 6 char arr[101] = { 0 }; 7 cons...原创 2019-11-04 15:17:17 · 204 阅读 · 0 评论 -
为什么调试的时候加 -g 选项
一个文件在加-g和不加-g的最大区别的就是,加上之后生成对的是debug版本的,可以调试,如果不加的话就不行,具体的演示见下图:这个时候就没有办法使用调试器gdb,下面演示加上-g之后,这里使用的例子命令都是list,即显示出每行的代码...原创 2019-11-04 14:45:22 · 852 阅读 · 0 评论 -
Linux下的编辑器对比、(除了GCC)编译器对比
Linux下的编辑器1 . vimVim是从 vi 发展出来的一个文本编辑器。它具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛的被使用。和Emacs并列成为Lunix系统用户最喜欢的编辑器–俗称神器。2.BracketsBrackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代...原创 2019-11-04 14:39:43 · 407 阅读 · 0 评论 -
Linux下的进入目录,增删查改等需要哪些权限以及部分重要的目录的介绍proc/tmp/...... gcc/gdb/g++使用命令安装
权限分为可读可写可执行加上粘滞位,如果想要进入一个目录的话,就必须有可执行的权限。目录的每个权限的作用:可读:目录的可读权限说明这个目录可以被查看目录底下的内容可写:目录的可写权限说明这个目录可以被修改内容可执行:目录的可执行权限说明这个目录可以被进入粘滞位:有粘滞位的目录不可以被删除Linux下的重要目录包括:/proc, /sys, /SElinux, /bin, /usr,/...原创 2019-11-04 14:16:39 · 225 阅读 · 0 评论 -
Linux---vim七种基本操作
vim七种基本操作:移删复替撤改跳1.移动:hjkl移动到最后一行shift + g ==> G移动到第一行gggg=G :变换格式到标准的代码格式跳到下一个字的首部w跳到上一个字的首部b跳到当前字的结尾e上下左右箭头也可以移动光标2.删除单个字符x:删除当前光标所在位置的字符X:删除当前光标所在位置的前一个字符[num]x:从当前光标所在位置的字符开始删...原创 2019-10-25 20:34:11 · 144 阅读 · 0 评论 -
Linux权限相关命令及vim基本操作
Linux权限相关命令及vim基本操作1.权限a.文件:可读:可以读出文件的内容可写:可以修改文件的内容可执行:表示这个文件具有可执行权限,但是是否真的能执行,取决于文件的内容b.文件夹:可读:缺失可读,不能查看文件夹下的内容可写:缺失可写,不能在文件夹下创建文件或者文件夹可执行:缺失可执行,不能进入到本文件夹权限的修改操作在之前的博客已经说明2.umaska.txt(...原创 2019-10-18 20:12:25 · 129 阅读 · 0 评论 -
su 与 su-root 的区别
su 与 su-root 的区别1.共同点:都是切换进入root用户2.不同点:su切换后只获得权限,工作环境不改变,su - 不仅获得权限,而且改变工作环境最直接的区别还是:su之后你的目录依然是你的用户端的目录,但是su-之后你的目录就真的变成了root的目录...原创 2019-10-14 20:36:58 · 846 阅读 · 0 评论 -
Linux命令---移动、复制、压缩、解压缩、查找、切换用户、更改权限
1.mva.移动文件或者文件名mv [filename] [path] :将filename移动到path下mv [folder] [path] :将folder移动到path下b.重命名mv [src_filename] [dest_filename]mv [src_folder] [dest_folder]2.cpa.可以拷贝文件cp [filename] [path]b....原创 2019-10-14 17:15:40 · 305 阅读 · 0 评论 -
Linux---命令---创建、删除、查看、写入
Linux基础指令Linux在学习的时候分为三个方面:基础指令&权限系统编程网络/高级IOVMware:虚拟机XShell:远程终端控制软件—远程连接虚拟机绝对路径:针对根目录而言:例如:cd /home/test相对路径:去别的目录可以使用…/. :例如:cd …/test1.ifconfig:获取Linux系统中的网卡信息(IP)2.ls:查看当前目录下的内容...原创 2019-10-05 11:26:57 · 166 阅读 · 1 评论