
Linux
文章平均质量分 64
adorable_
这个作者很懒,什么都没留下…
展开
-
Shell脚本基础知识总结-思维导图
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。原创 2022-09-20 20:17:25 · 1053 阅读 · 0 评论 -
搭建FastDFS服务器详细步骤
安装环境主机系统:windows 10虚拟机应用:VMware 12虚拟机系统:centos 7安装FastDFS1、下载并安装FastDFS依赖包libfastcommonwget https://codeload.github.com/happyfish100/libfastcommon/zip/masterunzip mastercd libfastcommon-master/./make.sh ./make.sh install注意: 在进行./make.sh i.原创 2020-11-23 16:57:58 · 1535 阅读 · 1 评论 -
Linux进程间通信之消息队列篇
消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为是一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。 Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度 消息队列函数...原创 2018-05-24 11:11:47 · 494 阅读 · 0 评论 -
硬连接与软链接
硬连接 硬连接是指通过索引结点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引结点号(inode index)。在Linux中,多个文件名指向同一个索引节点是存在的。一般这种连接就是硬连接。 硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”操作。因为对应该目录的索引节点有一个以...原创 2018-06-13 18:12:34 · 426 阅读 · 0 评论 -
进程间关系和守护进程
进程组 每个进程除了有⼀个进程ID之外,还属于⼀个进程组。进程组是⼀个或多个进程的集合。通常,它们与同⼀作业相关联,可以接收来⾃同⼀终端的各种信号。每个进程组有⼀个唯⼀的进程组ID。每个进程组都可以有⼀个组⻓进程,组长的pid与pgid相同。组⻓进程可以创建⼀个进程组,创建该组中的进程,然后终⽌。只要在某个进程组中⼀个进程存在,则该进程组就存在,这与其组⻓进程是否终⽌⽆关。删...原创 2018-06-14 00:48:32 · 243 阅读 · 0 评论 -
生产者消费者模型
什么是生产者消费者模型 在实际的开发中,经常会碰到如下场景:某个模块负责生产数据,某个模块负责处理这些数据。产生数据的模块就称为生产者,而处理数据的模块就称为消费者。这个模型还需要一个缓冲区来作为中介,生产者将产生的数据放入缓冲区中,消费者从缓冲区将数据取出并处理。 为什么需要生产者消费者模型解耦 假设生产者和消费者是两个类,如果让生产者直接调用消费者的某个方法...原创 2018-06-14 14:49:12 · 247 阅读 · 1 评论 -
Linux系统编程知识体系框图
进程基本概念:https://blog.youkuaiyun.com/adorable_/article/details/80035032Linux环境变量:https://blog.youkuaiyun.com/adorable_/article/details/80208432进程控制:https://blog.youkuaiyun.com/adorable_/article/details/80210855动态库与...原创 2018-06-07 23:30:17 · 1262 阅读 · 0 评论 -
GDB多线程调试
GDB多线程调试的基本命令info threads:显示当前可调试的所有线程,GDB会给每个线程分配一个Id。前面有“ * ”号的表示当前正在调试的线程。thread Id:切换当前调试的线程为指定线程。break FileName.cpp:LinuNum thread all:所有线程都在文件FileName.cpp的第LineNum行有断点。thread apply I...原创 2018-06-22 18:32:17 · 558 阅读 · 0 评论 -
单例模式
什么是单例模式 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的某一个类只有一个实例。即一个类只有一个对象实例。 为什么需要单例模式 有时候我们会遇到一个类只能有一个对象被实例化的情况,这是就需要单例模式。单例模式通过类本身来管理其唯一实例。在设计这个类的时候,让它只能创建一个实例并提供对此实例...原创 2018-06-15 00:07:12 · 416 阅读 · 0 评论 -
多线程编程
线程基本概念线程(thread)是操作系统能够进行运算调度的最小单位线程被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流一个进程中可以并发多个线程,每条线程并行执行不同的任务 线程是在进程内部运行的控制流程,多线程的控制流程可以长期共存,操作系统会在各个线程之间调度和切换,就像在各个进程间调度和切换一样。 由于同一个进程的多个线程...原创 2018-06-16 01:34:28 · 229 阅读 · 0 评论 -
UDP服务器
IP地址IP协议有两个版本,IPv4和IPv6,若没有特殊说明的,默认都是指IPv4IP地址是在IP协议中,⽤来标识网络中不同主机的地址对于IPv4来说, IP地址是⼀个4字节, 32位的整数我们通常也使⽤ “点分⼗进制” 的字符串表⽰IP地址,例如192.168.0.1 ;⽤点分割的每⼀个数字表示⼀个字节,范围是0 ~ 255 端口号端⼝号(port)是传输...原创 2018-06-24 23:42:44 · 308 阅读 · 0 评论 -
线程同步与互斥
同步互斥概念互斥: 互斥就是指某一资源同时只能允许一个访问者对其进行访问,具有唯一性和排他性,但是互斥无法限制访问者对资源的访问顺序,即访问是无序的。 对于线程来说,互斥就是说两个线程之间不可以同时运行,他们之间会相互排斥,必须等一个线程运行完毕之后,另一个才能运行。 同步: 同步是指在互斥的基础上(大多数情况),通过其他机制实现访问者对资源的有序访问。在大...原创 2018-06-20 17:45:08 · 942 阅读 · 1 评论 -
TCP服务器
所需API如下: (1)创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain, int type, int protocol);socket()打开⼀个网络通讯端口,如果成功的话就像open()⼀样返回⼀个文件描述符应⽤程序可以像读写⽂件⼀样用read/write在网络上收发数据如果socket()调用出错则返回-1对...原创 2018-06-28 16:44:58 · 10525 阅读 · 0 评论 -
死锁及其四个必要条件
死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 产生条件互斥条件:资源是独占的且排他使用,进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请...原创 2018-07-08 00:59:33 · 3570 阅读 · 0 评论 -
HTTP协议
URLURL:统一资源定位符,它是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。 URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。 URL的一般语法格式为:(带方括号[]的为可选项): http://hostname[:port][path] http表示通过http协议来定位网络资源,hostname表示合法的主机域名或IP地址。port指...原创 2018-08-04 23:44:50 · 337 阅读 · 0 评论 -
Linux进程信号
信号的基本概念 首先,我们可以用kill -l命令查看系统中定义的信号列表: 每个信号都有⼀个编号和⼀个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定义#define SIGINT 2。编号34以上的是实时信号,34以下的信号是普通信号。而这些信号各自在什么条件下产生,默认的处理动作是什么,在signal(7)中都有详细说明,在命令行上输入man 7 si...原创 2018-06-04 18:57:34 · 3048 阅读 · 1 评论 -
Linux进程间通信之命名管道篇
创建命名管道命名管道可以从命令行上创建 mkfifo filename命名管道也可以从程序里创建int mkfifo(const char *filename, mode_t mode);//创建命名管道int main(){ mkfifo("fifo", 0644); return 0;} 匿名管道与命名管道的区别匿名管道由p...原创 2018-05-23 16:33:20 · 655 阅读 · 0 评论 -
了解Linux(Linux基本指令)
Linux基础1、获取root的权限:su root2、获取IP地址的服务:ifconfig3、有一个公共的软件的文件夹:lib4、启动项:boot(文件夹)5、文件 目录 :var原创 2018-03-11 21:24:23 · 178 阅读 · 0 评论 -
Linux调试器gdb的使用
背景1. 程序发布有两个版本,Debug模式和Release模式2. Linux下gcc/g++出来的二进制程序默认是release模式3. 要使用gdb调试,必须在源代码生成二进制程序时加上 -g 选项 gdb可实现以下四个功能:1. 启动程序,自定义运行2. 设置断点3. 当程序停止可检查程序发生的事4. 动态改变程序执行环境原创 2018-04-02 11:25:23 · 514 阅读 · 0 评论 -
Linux编译器gcc/g++的使用
库的概念1.库的定义 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。2.库的分类 linux 下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,可以节省系统开销,因此代码体积较...原创 2018-04-01 21:41:51 · 1162 阅读 · 0 评论 -
Linux编辑器vim的使用
vim基本概念vi是vim的高级版,大致可以说是只是加入了语法高亮。 一般常用的有三种模式:普通模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或last line mode下。插入模式(Insert mode):可做文字输入,按【ESC】可回到普通模式。底行模式(last line mode):文件保存或退出,也可以进行文件替换原创 2018-04-01 18:55:22 · 356 阅读 · 0 评论 -
浅谈Makefile
背景在 Linux下的软件编译,有时候不得不自己写 makefile 。会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。makefile 关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。原创 2018-04-03 10:26:20 · 250 阅读 · 0 评论 -
Linux下彩色进度条
回车与换行回车(\r):回到当前行行首 换行(\n):换到当前行下一行行首 缓冲区概念 一个缓冲区对象是固定数量的数据的容器,其作用是一个存储器(内存),或者分段运输区,在这里数据可被存储并在之后用于检索。 缓冲区可分为:全缓冲,行缓冲,不带缓冲全缓冲:当填满标准IO的缓存后才进行实际IO操作。windows和linux都可以通过给 _Mode设为 _IO...原创 2018-04-03 13:26:54 · 239 阅读 · 0 评论 -
Linux下建立git远程仓库
设置本地Git仓库和GitHub仓库之间的连接:第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id _rsa.pub这两个文件,如果有,直接跳到下一步。如果没有,创建SSH Key:$ ssh-keygen -t rsa -C "1615691183@qq.com"//需把邮件地址换成你自己的邮件地址原创 2018-04-11 23:54:22 · 3472 阅读 · 2 评论 -
进程基本概念
基本概念程序:程序是静止的,是磁盘上的一个文件。课本知识:程序的一个执行实例,正在执行的程序等(动态的)。内核观点:担当分配系统资源(CPU时间、内存)的实体。程序一旦被操作系统加载到内存中,那么程序就变成了进程。进程信息放在一个叫进程控制块(PCB)的数据结构中,可以理解为进程属性的集合。Linux中描述进程的结构体叫做task_struct。task_struct是L...原创 2018-04-21 23:46:08 · 362 阅读 · 0 评论 -
Linux进程的程序替换
程序替换 假如操作系统正在执行某一个程序,我们可以利用程序替换函数指定一个新的程序,让操作系统去执行我们新指定的程序。也就是这样一种情形下,我们fork一个进程,如果fork成功,子进程会和父进程执行相同的代码,而我们创建子进程是希望子进程执行指定的操作,所以需要执行exec族函数。 程序替换函数 程序替换函数是一族函数,可以通过man命令进行查看。 其中有六种...原创 2018-05-18 23:50:20 · 636 阅读 · 0 评论 -
Linux环境变量
何为环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。原创 2018-05-05 18:56:46 · 231 阅读 · 0 评论 -
进程控制:进程创建、等待、终止
相关进程概念请参考:>进程基本概念<进程创建进程创建被定义为通过父进程创建子进程的过程。fork函数(copy)1.函数原型:pid_t fork(void); 2.返回值:子进程返回0,父进程返回子进程id,出错返回-13.特点:fork函数调用一次,返回两次,子进程返回0,父进程返回子进程id(将ID返回给父进程的原因是子进程可能很多,这样方便找到该函数fork后到底是哪个子进程)原创 2018-05-06 00:25:41 · 507 阅读 · 0 评论 -
Linux进程间通信之共享内存篇
共享内存 共享内存是Lunix系统中最底层的通信机制,也是最快的通信机制。共享内存通过两个或多个进程共享同一块内存区域来实现进程间的通信,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。通常是由一个进程创建一块共享内存区域,然后多个进程可以对其进行访问,一个进程将要传出的数据存放到共享内存中,另一个或多个进程则直接从共享内存中读取数据。因此这种通信方式是最...原创 2018-05-26 23:45:37 · 3599 阅读 · 0 评论 -
Linux进程间通信之匿名管道篇
进程间通信 进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同进程,使之能在一个操作系统里同时运行,并相互传递,交换信息。进程间通信的本质就是在不同进程之间传播或交换信息。 进程间通信的目的1)数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间 2)共享数据:多个进程想要操...原创 2018-05-22 23:17:08 · 932 阅读 · 0 评论 -
Linux进程间通信之信号量篇
信号量(计数器+等待队列)主要⽤于同步和互斥。 进程互斥由于各进程要求共享资源,⽽且有些资源需要互斥使⽤,因此各进程间竞争使⽤这些资源,进程的这种关系为进程的互斥系统中某些资源⼀次只允许⼀个进程使⽤,称这样的资源为临界资源或互斥资源。在进程中涉及到互斥资源的程序段叫临界区如:ATM自助取款机,每次只允许一人访问 进程同步进程同步指的是多个进程需要相互配合共...原创 2018-05-27 23:27:33 · 578 阅读 · 1 评论 -
Linux下的重要目录详解
四种类型1.可分享的: 可以分享给其他系统挂载使用的目录,包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录。2.不可分享的: 自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以不适合分享给其他主机。原创 2018-03-15 11:50:00 · 499 阅读 · 0 评论