Linux
文章平均质量分 94
蓝乐
这个作者很懒,什么都没留下…
展开
-
【Linux】自主WEB服务器实现
启动服务器后,访问页面:GET方法提交数据及构建响应:POST方法提交数据点击提交数据后构建响应:差错处理:服务器处理数据异常时:http协议被广泛使用,从移动端,pc端浏览器,http协议无疑是打开互联网应用窗口的重要协议,http在网络应用层中的地位不可撼动,是能准确区分前后台的重要协议。本次对http协议的理论学习,认识理解并运用CGI模式处理请求,在完成项目的过程中也遇到过许许多多,大大小小的bug,通过不断的调试最终获得较为不错的结果。原创 2024-02-21 02:21:04 · 950 阅读 · 0 评论 -
【Linux】线程池实现
线程池是一种线程使用模式。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。在线程取任务的接口设计时,我因为这里需要访问任务队列这个临界区给这个过程加上了锁,但是实际上在调用这个接口的时候其实线程就已经申请加了锁,而且两次申请的为同一把锁,就导致出现了线程在已经持有一把锁的情况下又去申请这把锁,从而产生了死锁。我们在初始化线程池的这部分代码,需要创建若干线程来完成其所需要执行的任务,这些线程的例程函数形式为。结果如上,左侧为线程池中的线程每隔一秒取出任务并执行,右侧为线程池的情况。原创 2024-01-14 15:28:42 · 860 阅读 · 0 评论 -
【Linux】进程信号
i < 32;} }此时运行进程,通过kill命令来发送信号,我们会发现进程捕捉到了我们发送的信号,但是并没有终止,这是因为我们给这些信号自定义了处理方法,那么是不是说这个进程已经金刚不坏,杀不掉了呢?原创 2022-10-31 23:09:23 · 519 阅读 · 1 评论 -
【Linux】信号量
简单来说,信号量本质上就是一个计数器,它是用来对临界资源进行计数的。原创 2022-10-21 20:52:23 · 831 阅读 · 0 评论 -
【Linux】网络基础--网络层与数据链路层
粗略介绍网络层与数据链路层相关内容,包含IP协议,ARP协议等多种协议以及DNS及NAT等技术的介绍。原创 2022-08-08 15:35:26 · 1880 阅读 · 1 评论 -
【Linux】网络基础--传输层详解
传输层主要负责将数据从发送端传输到接收端。我们之前已经知道,端口标识的是一个主机上进行的应用程序。在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过查看);netstat是一个用来查看网络状态的重要工具.上面的列表依次为协议类型、接收队列、发送队列、本地网络的IP和端口号、远端网络的IP和端口号。其中关于接收队列,我们之前编写socket编程时监听listen中参数backlog就代表接收等待队列的最大值。原创 2022-06-14 20:01:01 · 1034 阅读 · 14 评论 -
【Linux】网络基础--应用层详解
本文将重点介绍TCP/IP四层结构模型中的应用层。应用层是我们在之前的学习中,接触的最多的一层结构,我们所写的应用程序都是运行在应用层的。我们之前简单的认识过了协议,并说过协议本质是一种“约定”。而在之前关于套接字编程中的接口介绍中,我们都是以字符串为形式来进行传输的,那么如果我们要传输的是结构化的数据呢?下面我们通过一个网络简易计算器的例子来具体介绍一下有关结构化数据传输的协议。如果我们将实现一个简易的加法器服务端,那么就需要客户端将两个操作数及运算符发送到服务端,经由服务器计算再返回给客户端。那么客户端原创 2022-06-03 23:45:39 · 875 阅读 · 7 评论 -
【Linux】网络套接字编程
网络编程socket💡预备知识▶源IP地址与目的IP地址▶端口号与进程id▶源端口号与目的端口号▶UDP与TCP协议▶网络字节序💡套接字(socket)介绍▶概念▶分类▶工作流程💡socket编程▶socket编程接口▶sockaddr结构体🎄sockaddr结构体🎄sockaddr_in结构体🎄in_addr结构体💡socket编程应用▶基于udp协议的socket编程🎄服务端server_udp🎄客户端client_udp🎄地址转换函数🎄结果展示▶基于tcp协议的socket编程💡预备知识▶源IP地原创 2022-05-12 15:27:21 · 728 阅读 · 8 评论 -
【Linux】网络基础(一)--为socket编程做准备
网络基础(一)▶网络发展背景了解🎄网络发展▶网络协议🎄理解协议🎄OSI七层模型🎄TCP/IP五层(四层)结构模型▶网络中的地址管理🎄IP地址🎄MAC地址▶网络传输基本流程🎄同一网段内两台主机进行文件传输🎄数据包封装和分用▶网络发展背景了解🎄网络发展独立模式:独立模式下,没有网络,各个计算机的数据是互相独立的,此时如果要实现业务,那么需要依次实现各自的业务逻辑。网络互联:在网络互联下,各个相互独立的计算机的数据通过服务器集中管理,业务逻辑可以随时切换。局域网LAN(Local Area N原创 2022-05-07 20:01:42 · 689 阅读 · 10 评论 -
【Linux】进程间通信
进程间通信(IPC)🕐进程间通信简介🕐目的🕐发展🕐分类🕒管道🕒特点🕒分类🕒匿名管道(pipe)🕒感性认识🕒接口介绍🕒代码实现🕒命名管道(FIFO)🕒命名管道的原理🕐进程间通信简介🕐目的进程间通信是为了方便数据传输、资源共享、通知事件(子进程退出时需通知父进程退出信息)、进程控制(调试时Debug进程的控制)等功能而存在的。🕐发展进程间通信分为三个阶段:管道;System V IPC;POSIX IPC其中前两种通信方式为本地设备上的进程通信,而第三种通过网络实现跨设备的进程通信,本文将介绍本地的原创 2022-03-21 22:19:59 · 884 阅读 · 23 评论 -
【Linux】动态库与静态库
动态库与静态库文件系统补完文件的三个时间acm动态库与静态库动态链接与静态链接静态库文件系统补完文件的三个时间acm我们通过stat指令查看文件信息:[lyl@VM-4-3-centos 2022-3-14]$ stat log.txt File: ‘log.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fd01h/64769d Inode: 790871原创 2022-03-14 16:30:37 · 2497 阅读 · 16 评论 -
【Linux】深入理解重定向、inode详解与软硬链接的概念及区别
进一步认识基础IO再识重定向重定向基本命令dup2系统调用接口代码示例小结理解文件系统磁盘(硬盘)背景文件元数据文件系统inode详细介绍inode是一个文件的属性集合目录的inode软硬链接软链接介绍硬链接介绍本文将进一步介绍重定向、文件系统、inode以及软硬链接的相关知识。再识重定向在之前我们已经知道了输出重定向的概念,即本来应该写入标准输出中的内容却被写入了其他文件中。常见的输出重定向有:>, >>其中>为“w”方式(覆盖)写入文件,而>>为"a"方式(追原创 2022-03-11 21:26:51 · 1514 阅读 · 10 评论 -
【Linux】文件与文件描述符的介绍
基础IO(上)前言C语言文件IO相关操作接口回顾本文将介绍Linux系统下的文件操作并从底层了解文件的相关知识。前言在开始介绍之前,我们先带着下面这几个问题去思考:如何理解“Linux下一切皆文件”进程启动同时会默认打开3个文件,这3个文件是什么什么是文件描述符,为什么说有了文件描述符,就可以找到打开文件的所有细节从语言和系统层面分别理解文件描述符fd与FILE的关系那么接下来我们将开始介绍文件及文件描述符C语言文件IO相关操作接口回顾...原创 2022-03-06 14:44:24 · 1408 阅读 · 16 评论 -
【Linux】进程控制--进程的等待与替换
进程的等待与替换进程等待1.进程等待的必要性2.进程等待的方法wait()方法waitpid()方法返回值:参数:pid参数status参数options参数进程等待1.进程等待的必要性·我们之前介绍过了僵尸进程,即子进程退出时父进程没有接收到子进程的退出状态信息,这时的子进程就成为了僵尸进程,从而导致内存泄露。而进程一旦成为僵尸进程,那么任何手段都无法杀死这个进程,因为没有人能杀死一个已经死去的进程。因此,为了防止内存泄露的危害,需要进行进程等待来回收僵尸进程。·其次,进程等待还可以让父进程获取原创 2022-02-22 21:56:48 · 641 阅读 · 14 评论 -
【Linux】进程控制--进程的创建与终止
进程的创建与终止进程的创建fork函数fork函数的返回值写时拷贝写时拷贝的意义fork函数调用失败的情况进程的终止退出码退出码的意义进程常见的退出方法正常终止方法异常终止方法exit函数&_exit函数深入理解进程终止进程控制包括进程的创建、终止、等待与替换。本文将介绍进程的创建与终止。进程的创建进程的创建包括两个方面:一种是使用命令行的启动命令来创建进程;另一个是在程序本身通过fork函数来创建子进程fork函数fork函数我们并不陌生,调用fork接口将会以父进程为模板来创建子进程原创 2022-01-18 19:34:26 · 2662 阅读 · 21 评论 -
【Linux】进程概念--环境变量和进程地址空间
进程概念(二)一、环境变量1、基本概念2、常见环境变量·PATH·HOME·SHELL3、查看环境变量的方法4、和环境变量相关的命令·echo·export·env·unset·set5、环境变量的组织方式6、获取环境变量main函数中的第三个参数通过第三方变量environ获取通过系统调用获取环境变量7、环境变量通常时具有全局属性的一、环境变量1、基本概念·环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数·如:我们在编写C/C++代码的原创 2021-12-07 12:54:52 · 566 阅读 · 5 评论 -
【Linux】进程概念--操作系统与进程
进程概念(一)一、冯诺依曼体系结构二、操作系统(Operator System)1、概念2、设计OS的目的3、定位--负责管理的软件如何理解“管理”小结4、系统调用和库函数概念三、进程1、基本概念一、冯诺依曼体系结构在正式介绍Linux进程之前,我们先了解一下冯诺依曼体系结构。冯诺依曼体系结构是指所有的设备都只能直接和内存打交道,下图中的存储器指的就是内存。具体来说,一方面,不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备);另一方面,外设(输入或输出设备)要输入或原创 2021-12-05 00:43:14 · 1265 阅读 · 5 评论 -
【Linux】Linux调试器--gdb详解
Linux环境基础开发工具使用(二)一.Linux调试器-gdb使用1.背景2.使用一.Linux调试器-gdb使用1.背景·程序的发布方式有两种,debug模式和release模式·Linux gcc/g++出来的二进制程序,默认是release模式·要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项2.使用...原创 2021-11-16 11:15:59 · 2462 阅读 · 7 评论 -
【Linux】Linux环境基础开发工具使用介绍(一)
Linux环境基础开发工具使用介绍(一)一.Linux 软件包管理器 yum的使用1.什么是软件包2.查看软件包3.如何安装软件4.如何卸载软件5.lrzsz的安装和使用6.yum安装有意思的小程序二.Linux编辑器-vim使用1.vim的基本概念2.vim的基本操作3.vim正常模式命令(1)移动光标(2)删除文字(3)复制(4)替换(5)撤销上一次操作(6)更改(7)跳至指定的行4. vim末行模式命令6.简单vim配置(1)配置文件的位置(2)常用配置选项,用来测试三.Linux编译器-gcc/g+原创 2021-11-15 10:55:55 · 6436 阅读 · 4 评论 -
【Linux】Linux权限介绍
本篇文章将介绍Linux的权限,下面用一张图来简要了解一下本篇文章的内容:Linux权限一.shell命令以及运行原理二.Linux权限管理1.Linux权限的概念2.Linux权限管理(1)文件访问者的分类(人)(2)文件类型和访问权限(事物属性)三.文件权限值的表示方法(1)字符表示方法(2)8进制数值表示方法四.文件访问权限的相关设置方法1.chmod2.chown3.chgrp4.umask5.file指令五.目录的权限1.分类2.粘滞位3.小结(重点)一.shell命令以及运行原理Linu原创 2021-11-07 22:43:40 · 872 阅读 · 7 评论