Linux
文章平均质量分 76
sophia__yu
想要获得,便得付出。
展开
-
Linux命令(head、tail、date、cal、zip、unzip、gzip、gunzip、bzip2、bunzip2、grep、find)
一:head head是用来显示开头某个数量的文字块,即显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。 1.head /etc/passwd ——>默认打印10行 2.head -2 /etc/passwd —–>打印2行 3.head -n2 /etc/passwd —–>打印2行原创 2018-08-01 14:59:49 · 945 阅读 · 0 评论 -
进程优先级、环境变量、虚拟地址空间
一:进程优先级 cpu分配资源的先后顺序即为进程的优先级; 优先级高的进程有优先执行权利。配置进程优先级对多任务环境的linux很有用,可以改善系统性能; 可以把进程运行到指定的cpu上,把不重要的进程安排到某个CPU,只能这个进程使用,cpu不用切换,CPU核心可以独立运行,即有独立的寄存器。 进程优先级: 交互式进程:优先级较高; 批处理进程:优先级较低(运行在操作系统后台,循环干...原创 2018-08-19 17:02:55 · 273 阅读 · 0 评论 -
冯诺依曼体系、操作系统、进程(PCB,getpid(),fork)
首先,简画下各进程间关系: 一:冯诺依曼体系 当然对冯诺依曼体系的理解不能停留在概念上,需要深入对软件数据流的理解,接下里将会解释从我登上qq开始和朋友聊天,数据的流动过程(从你打开窗口,开始给他发消息,到他接受消息之后的数据流动过程),那如果是发送文件呢? 当是发送消息:从我打开窗口,通过键盘输入内容,输入设备会把数据加载到内存,此时,点击发送,然后,CPU需要将内存的数据加载到寄...原创 2018-08-18 18:36:43 · 488 阅读 · 0 评论 -
Linux调试器-gdb使用、makefile、进度条及yum
一:gdb -g 向可执行程序中添加调试信息: 然后用gdp调试:gdb ./test –>run ->start run:运行程序 start:开始逐步调试; n 进行下一步调试(不进入函数); s 进行下一步调试(进入函数); b:添加断点(b filename:line 向指定文件指定行添加断点或者 b line 向指定行添加断点); i原创 2018-08-14 20:49:25 · 889 阅读 · 1 评论 -
Vim及gcc/g++使用
一:vim使用 首先了解三种常用模式: 普通模式是控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式或者到底行模式。 插入模式:只有在插入模式下,才可以做文字输入,按ESC可以回到普通模式。 底行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 详细为: 插入模式: i:按i从普通转换插入模式,是从光标当前位置开始输入; a:按a从普通模式...原创 2018-08-14 17:24:08 · 2349 阅读 · 0 评论 -
Linux权限
Shell 定义: 命令行解释器:将使用者的命令翻译给核心(Linux)处理; 核心(Linux)将核心的处理结果翻译给使用者。 具体解释器:bash 、tcsh Linux权限管理 文件访问者的分类: 文件所有者、文件所属者、其他用户 文件访问权限的计算: 如果已知默认权限掩码是002,求文件访问权限? 用八进制计算 777-002=775 ,但Linux会把可执行权限去掉...原创 2018-08-01 17:43:18 · 655 阅读 · 1 评论 -
Linux基本指令(ls、pwd、cd、touch、mkdir、rmdir、rm、man、cp、mv、cat、tac、more、less)
一:ls 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 1.ls -a 列出目录下的所有文件,包括以.开头的隐含文件。 目录:(ls 与ls -a) 以.开头是隐藏文件。 文件(ls与ls -a) 2.ls -d。。。。。。。。。。。。。。。。 3.ls -l -t ls -l是一行只输出一个文件; ls -t是以最后一次修...原创 2018-07-30 17:55:02 · 17944 阅读 · 4 评论 -
makefile各种赋值(?= := = +=)
在makefile中有各种赋值:= := ?= +=,接下里将会对4种赋值做以区分。递归展开变量(=)延时变量,只有被使用时才展开定义。 用=或defin关键字都可以定义这种变量,如果变量的定义引用了其他的变量,那么引用会一直展开下去,直至找到被引用的变量的最新的定义,并以此作为该变量的值。但是有时候会陷入无穷递归。a=I loveb=$aa=linuxtest: ...原创 2018-09-20 17:41:43 · 1006 阅读 · 0 评论 -
单继承、多继承、虚继承
单继承1.单继承:一个子类只有一个直接父类时称这个继承关系为单继承;多继承 2.多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承。单继承:多继承:菱形继承;class Person{public: string _name; //姓名};class Student : public Person{protected: int _n...原创 2018-09-20 18:11:07 · 2780 阅读 · 0 评论 -
多进程和多线程简单tcp聊天程序
如果需要一个服务端可以连接多个客户端,并同时与多个(不超多listen第二个参数及最大同时并发数)客户端通信,可以利用多进程即创建子进程,子进程来完成服务端的接受和发送数据;也可以创建多个线程。tcp客户端代码//tcp 客户端代码//1.创建套接字//2.绑定地址信息//3.向服务端发送连接请求//4.发送数据//5.接受数据//6.关闭socket描述符#include&l...原创 2018-10-02 21:50:58 · 752 阅读 · 0 评论 -
tcp三次握手建立连接和4次挥手断开连接
我们知道tcp协议是有连接、可靠、面向字节流传输。接下来将会介绍具体建立连接过程,即三次握手。服务端状态改变:[CLOSED -> LISTEN] 服务器端调用listen后进入LISTEN状态, 等待客户端连接;[LISTEN -> SYN_RCVD] ⼀旦监听到连接请求(同步报文段), 就将该连接放入内核等待队列中, 并向 客户端发送SYN确认报文.[SYN_RCVD ..原创 2018-10-04 15:01:43 · 667 阅读 · 0 评论 -
应用层(http协议) http与https区别
在协议分层的TCP/IP(或四层)通讯协议采用了5层的层级结构,5层分别包括:应用层、传输层、网络层、数据链路层、物理层。5层具体一.应用层 程序员写的一些网络程序都在应用层。...原创 2018-10-20 19:06:00 · 2436 阅读 · 0 评论 -
传输层(Udp协议 Tcp协议)
传输层是负责数据能够从发送端传输接收端。负责端与端之间的传输。端口号是唯一表示原创 2018-10-20 21:47:51 · 1200 阅读 · 0 评论 -
https加密底层原理
一:http与https区别http是明文传输:是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。https是安全的加密传输:HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。二:https加密原理加密方式有对称加密和非对称加密比如客户端A和服务端B传输数据对...原创 2019-08-18 19:25:19 · 1071 阅读 · 0 评论 -
常见状态码
SWITCH_PROTOCOL(101, "Switching Protocols"), OK(200, "OK"), CREATED(201, "Created"), ACCEPTED(202, "Accepted"), NO_CONTENT(204, "No Content"), PARTIAL_CONTENT(206, "Partial Co...原创 2019-08-25 18:18:21 · 435 阅读 · 0 评论 -
Linux下根目录
在linux下我们一直使用很多命令,比如ls,cd,mkdir等等,那这些命令是在哪个目录里呢?我们可以先看看根目录,所有目录都挂在根目录下,有且只有一个根目录,所有东西都从根目录开始,如果在终端输入/home,其实是告诉电脑从/(根目录)开始,再到home目录。 /是根目录,cd /进入根目录后,我们可以看见很多目录:bin、dev、root…… 接下来将会依次介绍每个目录: bin...原创 2018-08-20 17:54:25 · 24085 阅读 · 3 评论 -
文件描述符fd和重定向(dpu、dpu2)
一:文件描述符 文件描述符是什么? 文件描述符实际是一个数字,进程如何通过一个数组来操作文件? Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0,标准输出1,错误标准输出2; 0,1,2对应的物理设备一般是:键盘,显示器,显示器。 文件描述符是进程pcb中files _struct这个结构体中文件描述信息的结构体数组的下标,操作系统就可以通过这个数字下标找到对应...原创 2018-08-22 21:22:00 · 678 阅读 · 0 评论 -
htons/htonl、ntohs/ntohl、inet_addr、inet_ntoa
1.htons/htonl#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);两个函数都是 将无符号整型从主机字节序转换成网络字节序。 那各有什么区别呢?htonl()表示将32位的主机字节序转化为32位的网络字节序 htons()表示将16位的...原创 2018-09-24 10:20:46 · 476 阅读 · 0 评论 -
tcp网络编程客户端和服务端及listen和tcp允许最大连接数
tcp网络编程 tcp网络编程步骤:由于tcp传输特点是可靠有连接,那么就有1.客户端向服务端发送连接请求(SYN),2.服务端接受请求并向客户端发送(SYN+ACK);3.客户端向服务端回复ACK表明他知道服务端同意连接。以上三个步骤就是三次握手。服务端编程步骤:1.创建套接字2.为套接字绑定地址信息3.监听:开始接受服务端的连接请求4.获取连接建立成功的新socket5....原创 2018-09-24 12:59:16 · 4330 阅读 · 0 评论 -
网络编程套接字、网络字节序及用udp写客户端和服务端聊天程序
认识IP地址 IP协议有两个版本:IPV4和IPV6。 IPV4:IPV4版本的IP地址是4字节无符号整数。那么就存在IP地址资源匮乏的时候,这时可以采用两种方法: DHCP:ip地址动态分配(应用层协议); NAT: 地址替换; 但是这两种方法只是暂时的有IP地址,但并不能从本质上解决IP资源不够的问题。 IPV6:IPV6版本的IP地址是128字节无符号整数。这个可以从本质上解决IP...原创 2018-09-24 13:02:20 · 543 阅读 · 0 评论 -
网络基础
网络发展史 ip地址:在网络上标识唯一的主机 端口:主机上的某个程序 协议:统一的约定,是一个结构体 网络通信协议的分层 网络通信协议:数据在网络中传输的格式。 网络通信过程中,通信的环境十分复杂,应对的场景各有不同,导致网络通信中有很多协议。 协议的封装: 封装:把复杂的实现过程封装起来,对外提供一个方法/接口供别人使用,使封装的功能更加好用。 协议的封装:把协议的实现封装起来,使...原创 2018-09-15 19:54:19 · 166 阅读 · 0 评论 -
进程创建、进程等待、进程终止、进程替换、模拟shell
一:进程创建 fork创建进程 在https://mp.csdn.net/postedit/81710318博客中简单介绍了用fork创建进程, 用fork创建进程时,子进程复制的是父进程的PCB,包括子进程复制了父进程的虚拟地址空间和页表,所以子进程的数据和父进程的数据虚拟地址相同,由于页表映射,这时子进程和父进程物理内存也相同,但是当子进程的数据发生改变时,系统会为子进程的数据重新分配物...原创 2018-09-12 17:08:42 · 997 阅读 · 0 评论 -
进程间关系与守护进程
进程间关系: 进程组: 一个或多个进程的集合。进程组中有一个进程是组长进程,进程组的id就等于这个进程的pid 进程组并不会随着组长进程的退出而退出,而是组中所有进程退出后才会退出。 ctrl+c针对的前台进程组中所有进程,(s+) ./main & 变成后台进程 (s) 进程:2444 、2444; 组长:2444,进程组第一个进程; PID:线程组ID PG...原创 2018-09-11 19:18:31 · 191 阅读 · 0 评论 -
线程概念、线程创建、线程退出及线程等待
对于线程有一下学习结构: cpu资源足够的情况下:为什么三个进程可以同时运行? 进程调度:cpu调度进程时,调度的是PCB 因为三个进程有三个PCB,因此在cpu足够的情况下,三个进程可以实现并行。 1.什么是线程?Linux下pcb是线程: - Linux操作系统下,pcb是线程,其他操作系统不是这样; - 一个进程中至少有一个线程,线程是运行在...原创 2018-09-09 21:23:14 · 289 阅读 · 0 评论 -
进程间通信(管道、消息队列、共享内存、信号量)
进程间通信:进程之间的沟通交流 进程间为什么要沟通交流? 在实际工作中往往会出现在一个系统中好几个进程协同工作,那么这些进程就需要沟通交流,完成协作,而由于进程的独立性, 进程间的沟通变得困难,复杂。因此就产生了各种进程间通信方式,来解决如何进行进程间通信的问题。 进程间通信的目的: 数据传输:一个进程需要将它的数据发送给另一个进程;...原创 2018-09-05 11:35:59 · 9190 阅读 · 5 评论 -
信号的捕捉、可重入函数、竞态条件、alarm和pause实现sleep、
信号的捕捉 信号的捕捉流程:针对的是自定义处理方式 一个进程如何捕捉到一个信号然后进行处理的过程。 如果信号的处理是用户⾃定义函数,在信号递达时就调⽤这个函数,这称为捕捉信号。由于信号处理函数的代码是在⽤户空间的,处理过程⽐较复杂,举例如下: ⽤户程序注册了SIGQUIT信号的处理函数sighandler。 当前正在执⾏main函数,这时发⽣中断或异常切换到内核态。 在中断处理完毕后要...原创 2018-09-04 19:04:52 · 277 阅读 · 0 评论 -
信号的处理
信号的处理: 每一个信号实际都对应了某个事件,当进程收到了一个信号,那么就意味着现在有一个重要的事件要处理,因此会打断我们当前的操作,然后去处理这个事件。 信号还有一个名字:信号的递达。 那么进程什么时候会去检测pending集合,看有没有信号需要去处理?什么时候处理信号? 进程是在从**内核态切换到用户态**的时候会去检测一下是否有信号需要去处理。 处理方式: - 默认处理方...原创 2018-09-02 22:13:24 · 208 阅读 · 0 评论 -
信号的注册、信号的注册
信号的注册(修改信号pending位图)信号记录在进程pcb中;信号集合:sigset_t 结构体(保存信号):进程记录一个信号时是通过这个结构体的位图来记录的(1号信号在位图第0位置存储,位图的该位置原本是0,如果有信号,该位置置1),这个位图的位数+1代表的就是指定 的信号存储位置。信号的阻塞与屏蔽 在pcb中有一个pending结构体存储当前收到的信号,还有一个结构体bloc...原创 2018-09-02 21:35:27 · 1180 阅读 · 2 评论 -
信号的产生
进程信号: 信号生命周期:信号的产生—>信号的注册—>信号的阻塞(屏蔽)—>信号的注销—>信号的处理 信号列表:知道有哪些信号,并且对应了哪些操作 kill :可以杀死一个进程,但并不是为了杀死一个进程设计的,而是为了给某一指定进程发送一个信号 Linux下一共有62个信号(32,33没有),并且分了两类:1-31 是非可靠信号(非实时信号):1-31...原创 2018-09-02 13:10:57 · 675 阅读 · 0 评论 -
库函数IO和系统调用
C文件I/O相关操作: fopen: FILE *fopen(const char *path, const char *mode); 1 #include<stdio.h> 2 #include<errno.h> 3 #include<string.h> 4 5 int main(原创 2018-08-23 17:28:18 · 486 阅读 · 0 评论 -
长连接和短连接
短连接连接 -> 传输数据 -> 关闭连接HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。短连接是 SOCKET连接后发送数据并且接收数据完马上断开连接。在HTTP1.0版本默认为短连接。长连接连接 -> 传输数据 -> 保持连接 -> 传输数据 -> … -> 关闭连接。长连接指建立SOCK...原创 2019-09-03 13:10:08 · 568 阅读 · 0 评论