![](https://img-blog.csdnimg.cn/6fa0add937484f8ea6a5f686ba1348b5.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux
文章平均质量分 83
Linux笔记
小丑小丑小丑
这个作者很懒,什么都没留下…
展开
-
C++11和POSIX线程库线程互斥与线程同步编程(锁,条件变量,信号量)
文章目录完成两个线程通过条件变量实现交替打印的控制锁+条件变量二元信号量对比一下条件变量和二元信号量按序打印条件变量版二元信号量版生产者消费者条件变量+锁(C++11)多元信号量(有点绕)条件变量和多元信号量的对比前言:用一些习题来说明这三个东西怎么写。说实话,编写线程同步代码并不简单。完成两个线程通过条件变量实现交替打印的控制锁+条件变量不管是C++11还是POSIX,套路都是一样的首先要强调的两点:1.缓冲区队列是临界资源,因此进入就要加锁2.条件变量是临界资源,进行判断条件是否满足和原创 2022-05-12 22:22:24 · 1100 阅读 · 1 评论 -
select poll epoll
文章目录五种IO模型io等于等待+拷贝读IO等于读事件就绪+内核数据拷贝至用户空间写IO等于写事件就绪+用户空间数据拷贝至内核空间高效IO的本质是:减少等待的比重。五种IO模型大体分为同步IO和异步IO同步IO有四种:阻塞IO非阻塞IO(轮询)信号驱动IO(不需要自己等待,需要自己去拷贝)多路复用、多路转接(一次等多个文件描述符)异步IO(不需要自己去等待和拷贝)select和poll和epoll只负责IO中的一件事情:等待!!!read和recv要做的事情是等待(一个文件描原创 2022-03-31 22:10:37 · 673 阅读 · 5 评论 -
linux网络ip及其他
向下原创 2022-03-27 16:13:04 · 4165 阅读 · 0 评论 -
linux网络udp和tcp
文章目录原创 2022-03-21 20:58:58 · 4335 阅读 · 9 评论 -
linux网络http
文章目录自定义协议http协议是一种 “约定”. socket api的接口, 在读写数据时, 都是按 “字符串” 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢?协议就要出现了。所谓协议就是大家都按照这个规定发送数据给服务器,服务器都按照这个规定发送数据给本地。自定义协议定义结构体发送信息到网络叫序列化,定义结构体从网络发到本地叫反序列化序列化反序列化用工具 json xmlhttpurl,url就是网址。登录信息一般是不显示的,忽略的。服务器端口是不可以省略的,原创 2022-03-17 20:12:40 · 2098 阅读 · 5 评论 -
linux网络socket
文章目录理解源ip地址和目的ip地址端口号端口号和pid套接字网络字节序socket编程接口sockaddr结构理解源ip地址和目的ip地址在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址ip地址可以确定唯一一台主机端口号端口号是传输层协议的内容。端口号可以确定主机上唯一的进程。一个端口号只能被一个进程占用。一个进程可以有多个端口号总结:ip标定全公网内唯一一台主机port标定特定一台主机上唯一一个进程IP+PORT:全网内唯一一个进程端口号和pidpid原创 2022-03-15 15:25:07 · 7613 阅读 · 9 评论 -
linux网络基础
计算机网络背景网络发展独立模式->网络互联->局域网->广域网协议协议是计算机之间的约定。计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信号就需要约定好双方的数据格式。也就是说:两台计算机之间规定好了频率强就是1,频率弱就是0,这就叫协议。但是不只有约定,这个约定还要很多人都同时遵守,如果只有几个人遵守这个约定就没有意义了。因此这个约定是行业先锋来指定的。网络其实也是数据交互,把数据写到硬盘也是数据原创 2022-03-10 18:40:29 · 2676 阅读 · 0 评论 -
linux多线程
线程概念进程是承担分配系统资源的基本实体线程是调度的基本单位,线程是进程里面的执行流。(线程在进程的地址空间里面运行)进程:线程 = 1 : n一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行CPU在管理进程的时候只看pcb(因为一个pcb代表一个执行流),在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化。原因就是因为线程没有很多的数据结构去管理linux中,没有真正意义上的线程。(没有为线程设计数据结构,windows原创 2022-03-08 15:52:14 · 753 阅读 · 4 评论 -
linux进程信号
文章目录信号入门技术应用角度的信号问题1问题2问题3问题4设置信号信号种类信号处理常见方式信号生命周期信号产生时通过键盘产生系统调用函数killraiseabort软件条件产生信号信号入门注册过的信号来了之后,我们是知道要怎么做的。比如说:红绿灯,我们知道红灯停绿灯行。信号算通信,进程通信的是数据。信号是想告诉你哪些时间发生了技术应用角度的信号问题1运行一个前台进程。运行之后,我们发现,按什么命令它都不理你。原因:一个会话中,只允许有一个前台进程,现在的前台进程是myfile,bash原创 2022-03-03 21:19:10 · 901 阅读 · 5 评论 -
进程间通信
文章目录进程间通信介绍进程间通信目的进程间通信的本质进程通信方式管道管道的定义匿名管道匿名管道的原理pipe函数匿名管道使用步骤使用pipe实现一个管道通信文件描述符理解匿名管道(重点)内核角度理解pipe(重点)管道读写特点(重点)管道5个特征进程间通信介绍进程间通信简称IPC(interprocess communication),进程间通信就是多个进程在交换信息。进程间通信目的数据传输: 一个进程需要将它的数据发送给另一个进程。资源共享: 多个进程之间共享同样的资源。通知事件: 一个进程原创 2022-03-01 16:54:45 · 361 阅读 · 8 评论 -
动态库和静态库
文章目录静态库和动态库静态库动态库动态链接生成库生成静态库生成动态库静态库和动态库库的名字都是去掉lib和后缀之后的才是库名。这点很重要静态库静态库在linux下是.a文件。程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。系统角度:静态库是在链接过程被加入到了进程地址空间的代码区。图示:好处:如果编译链接后,把静态库删掉也可以运行。这个程序具有可移植性。坏处:让程序变得超级大,原因也很简单,就是因为加入了很多代码。动态库动态库在linux下是以.so原创 2022-02-27 20:43:44 · 466 阅读 · 0 评论 -
理解inode
文章目录磁盘构成磁盘存储的映射inode和data block(重点)inode bitmapblock bitmapinode tabledata table查找文件的示意图(重点)创建新文件需要的操作(重点)为什么明明还有空间,却创建不了文件创建目录需要的操作删除文件需要的操作目录文件与inode硬链接文件信息中的硬链接数软链接文件信息中的三个时间a c minode是文件系统里面的一个数据结构。注:这里讲的文件是硬盘级文件,而不是被加载进内存被进程管理的进程级文件磁盘构成磁盘是一种机械设备,原创 2022-02-27 18:20:21 · 1517 阅读 · 0 评论 -
dup2使用
头文件:参数:dup2是帮助我们进行重定向的系统调用接口使用方法:把fd_arrays[oldfd]拷贝到fd_arrays[newfd],实现重定向原理:要会使用dup2,要先了解文件描述符fd文件描述符下面这段代码就是不调用dup2接口进行的重定向,本质是把原先指向stdout的fd指向了新打开的文件。使用dup2是这样写的。原理:把新打开的文件的fd拷贝到fd_arrays[1]里面,实现重定向。因此使用dup2的时候,...原创 2022-02-27 16:27:37 · 1021 阅读 · 0 评论 -
如何解释linux下一切皆文件的观点
先讲一下系统是如何管理文件的。如管理进程一般,管理文件也是有一堆数据结构来管理的。管理文件里面有一个叫file_struct的结构体。看一下内核代码:代码很长,截了一小段而已。里面有一个成员类型很有趣,叫struct file_operations,我们可以看一下里面是什么。我们惊奇的发现:里面是一堆函数指针,也就是说,linux内核把函数放进了结构体里面。这不就是面向对象的思想吗!先说结论:确实是面向对象思想,linux把所有硬件,目录,文件等都当成文件对象来管理了。这还是一种多态!大致原创 2022-02-26 22:01:48 · 1369 阅读 · 0 评论 -
文件描述符file description
文章目录文件描述符文件描述符概念进程如何用fd管理文件文件描述符分配规则重定向关于重定向的一些问题文件描述符文件描述符概念我们要打开文件时,文件被加载进内存当中,此时文件是被进程管理着的。进程对文件的管理同样也是用数据结构进行管理。这个数据结构名字叫做files_structtask_struct里面有一个指针,指向files_struct.而files_struct里面有一个叫做fd_arrays的东西,这个数组的下标就是文件描述符fd。这个数组里面放着文件指针file*,可以指向文件,管理原创 2022-02-26 21:41:37 · 1587 阅读 · 0 评论 -
系统文件接口open
系统文件接口open介绍man手册介绍参数1:文件路径名字,一般都是当前路径打开,直接输入文件名即可重点:参数2:flags – 表示你要选择以哪种方式打开,常用有以下几种O_TRUNC --- 清空文件 open truncatedO_WRONLY --- 只写打开 open write onlyO_RDONLY --- 只读打开 open read onlyO_APPEND --- 追加打开 open appendO_CREAT --- 若文件不存在,创建一个新的注原创 2022-02-26 20:36:56 · 829 阅读 · 0 评论