Linux学习
文章平均质量分 84
槐夏风清7
无用之用,方为大用
展开
-
【Linux Day17 Libevent库】
Reactor 模式直译过来就是反应堆模式,也被称为 Dispatcher 模式。Reactor 是一种事件驱动机制,应用程序需要提供事的接口注册到 Reactor 上,如果有相应的事件发生,Reactor 就会主动分发给对应的接口进行处理。这种机制和好莱坞法则非常契合:不要打电话给我们,我们会打电话给你。原创 2024-03-20 13:25:23 · 747 阅读 · 0 评论 -
【Linux Day16 I/O复用】
I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。原创 2024-03-20 13:21:12 · 948 阅读 · 0 评论 -
【Linux Day15 UDP网络通讯】
- UDP 是无连接的(不需要类似TCP的事先进行connect操作),所以每次发送数据都需要指定对端的地址(IP 和端口)。recvfrom()接收数据,每次都需要传给该方法一个地址结构来存放发送端的地址。recvfrom()可以接收所有客户端发送给当前应用程序的数据,并不是只能接收某一个客户端的数据。**- **UDP是面向数据报:传输的形式都是以数据报,不可分割也不可合并,发送端应用程序每执行一次写操作,UDP 模块就将其封装成一个 UDP 数据报发送。原创 2024-02-03 22:30:25 · 623 阅读 · 1 评论 -
【Linux Day14 TCP网络通讯】
有了套接字就可以通过网络进行数据的收发。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。**bind()方法是用来指定套接字使用的 IP 地址和端口。**IP 地址就是自己主机的地址,测试程序时可以使用回环地址“127.0.0.1”。端口是一个 16 位的整形值,一般 0-1024 为知名端口,如 HTTP 使用的 80 号端口。这类端口一般用户不能随便使用。其次,1024-4096 为保留端口,用户一般也不使用。4096 以上为临时端口,用户可以使用。原创 2024-02-03 22:16:48 · 1025 阅读 · 0 评论 -
【Linux-Day13-生产者消费者模型】
生产者/消费者问题,也被称作有限缓冲问题。可以描述为:两个或者更多的线程共享同一个缓冲 区,其中一个或多个线程作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个线程作为“消费者”从缓冲区中取走数据。生产者/消费者模型关注的是以下几点:生产者产生资源,消费者获取资源,资源队列为满时,生产者停止生产,资源队列为空时,消费者无法获得资源 使用信号量来构建此模型分析如下:还需定义互斥锁mutex实现对缓冲区的互斥访问,避免多次操作同一个地址测试代码:运行结果原创 2023-09-18 18:57:35 · 76 阅读 · 0 评论 -
【Linix-Day12-线程同步和线程安全】
int。原创 2023-09-15 19:25:00 · 75 阅读 · 0 评论 -
【Linux-day11-线程的创建与同步】
成功返回 0, 失败返回错误码thread: 接收创建的线程的 IDattr: 指定线程的属性start_routine: 指定线程函数arg: 给线程函数传递的参数。原创 2023-09-13 22:14:24 · 189 阅读 · 0 评论 -
【Linux-Day10-信号量,共享内存,消息队列】
msgget()创建或者获取一个消息队列msgget()成功返回消息队列 ID,失败返回-1。原创 2023-09-12 22:20:02 · 354 阅读 · 0 评论 -
【Linux-Day9-进程间通信】
前提引入: 我们之前接触过管道 | 将前一个命令的输出结果作为后一个命令的输入如:ps | grep “sleep”其实就是将 ps 的结果写入到一个区域,在从这个区域读出目标数据。原创 2023-09-03 14:48:25 · 369 阅读 · 0 评论 -
【Linux-Day8- 进程替换和信号】
我们发现 终端输入的任意命令的父进程都是bash,这是因为Linux系统是用fork()复制出子进程,然后在子进程中调用替换函数进行进程替换,实现相关命令。(1) exec 系列替换过程:pcb 使用以前的只修改,进程实体更换。原创 2023-08-26 23:42:40 · 1848 阅读 · 0 评论 -
【Linux-Day7-文件操作,fork与malloc结合】
(1)c 语言中文件操作回顾C语言操作文件分为三步1)打开文件2)读写文件3)关闭文件。有FILEfilename: 文件名,包括路径,如果不显式含有路径,则表示当前路径。mode:文件打开模式,指出对该文件可进行的操作。常见的打开模式如 “r” 表示只读, “w” 表示只写,“rw” 表示读写,“a” 表示追加写入。返回值: 打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。故需定义 FILE 类型的指针变量,保存该函数的返回值。。原创 2023-08-14 11:05:06 · 91 阅读 · 0 评论 -
【Linux-Day6-fork()--僵死进程,fork与缓冲区结合问题】
当子进程结束后,并没有消失,仍然可以在系统中观测到,但此时子进程其实已经运行结束了,此时子进程的状态被称为僵死状态,系统把处于该类状态的进程称为僵死进程。如图。原创 2023-08-14 10:57:58 · 68 阅读 · 0 评论 -
【Linux-Day5-fork()-复制进程】
(1) 进程:一个正在运行的程序。(2) PCB : 即是进程控制块,是进程存在的唯一标志。用来描述进程的属性信息。fork 函数会复制此进程的PCB块,新生成一个进程,调用 fork 函数的进程为父进程,新生成的进程为子进程。在父进程中返回子进程的 pid,在子进程中返回 0,失败返回-1。程序运行的 fork()处,会将父进程整体复制一份,子进程只执行fork()后的语句,不执行fork()以前的语句。原创 2023-08-14 10:45:44 · 74 阅读 · 0 评论 -
【Linux-Day4-库文件,printf的缓冲区,main函数参数】
静态库制作,动态库制作,printf函数刷新区,主函数参数原创 2023-08-09 19:52:22 · 57 阅读 · 0 评论 -
【Linux-Day3-gcc命令,gdp调试,文件解压,压缩操作】
(1) 预编译 : gcc -E main.c -o main.i(2) 编译: gcc -S main.i -o main.s(3) 汇编: gcc -c main.s -o main.o(4) 链接: gcc main.o -o main。原创 2023-08-09 19:14:48 · 288 阅读 · 0 评论 -
【Linux-Day2-基础指令补充】
find 搜索路径 -name 文件名 按文件名字搜索find 搜索路径 -cmin -n 搜索过去n分钟内修改的文件find 搜索路径 -ctime -n搜索过去n分钟内修改的文件。原创 2023-08-09 19:06:24 · 49 阅读 · 0 评论 -
【Linux Day-1(简单指令和vim操作)】
bin 存放常用命令(即二进制可执行程序)/etc 存放系统配置文件/home 所有普通用户的家目录/root 管理员用户的家目录/usr 存放系统应用程序及文档/proc 虚拟文件系统目录,以进程为单位存储内存的映射/dev 存放设备文件/mnt 临时挂载点/lib 存放库文件/boot 系统内核及启动有关的文件/tmp 存放各种临时文件,是所有用户均可访问的地点/var 存放系统运行中常改变的文件, 如系统日志。原创 2023-08-09 18:49:14 · 52 阅读 · 0 评论