Linux自学笔记
文章平均质量分 62
明小白的笔记
一个c++小白,记录我的编程之旅,希望能和各位大佬多多交流
展开
-
epoll反应堆
回调函数运行时,如果此时来了新的客户端请求连接,会导致不能及时处理请求,这在高并发的环境中可能会导致有很大的延迟。所以可以使用多线程的方式,具体是。epoll反应堆实际上就是将文件描述符、监听的事件、回调函数用结构体封装在一起,发生事件时触发对应的回调函数即可。下面举一个简易版的例子。而非fd成员,因为ptr是一个void类型指针,我们可以定义一个结构体来保存所有的信息,可以使用线程池的方式来解决,在下一篇文章中写具体如何实现。原创 2024-02-19 13:52:38 · 417 阅读 · 1 评论 -
多线程---互斥锁和读写锁
互斥锁也叫互斥量,互斥锁是用一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即加锁(lock)和解锁(unlock)。原创 2024-02-18 20:22:35 · 528 阅读 · 1 评论 -
高并发服务器--多路IO转接(多路IO复用)
多路IO转接三种方式:select(windows, 跨平台)、poll(少用)、epoll(linux)。多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想时,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。原创 2024-02-17 17:38:31 · 1468 阅读 · 1 评论 -
TCP协议服务器编程笔记
父进程关闭cfd,回收子进程的资源。子进程中,关闭lfd,服务客户端。注意:这里用到上一篇文章的tcp包裹函数。原创 2024-02-14 17:11:02 · 366 阅读 · 1 评论 -
Linux线程基础--笔记
但是线程也可以被置为detach状态,这样的线程一旦终止就立刻回收它占用的所有资源,而不保留终止状态。线程自己基本商不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。所以线程是轻量级的进程(LWP: light weight process),在Linux环境下线程的本质仍是进程。进程号在整个系统中是唯一的,但线程号不同,它只在它所属的进程环境中有效。注意:线程的取消并不是实时的,而又一定的延时。原创 2024-02-02 22:35:41 · 1826 阅读 · 0 评论 -
tcp包裹函数
【代码】tcp包裹函数。原创 2024-01-22 12:44:53 · 377 阅读 · 1 评论 -
tcp协议客户端编程
使用的工具:NetAssist网络助手。原创 2024-01-13 22:43:14 · 383 阅读 · 1 评论 -
Linux信号
信号集是一个能表示多个信号的数据类型,sigset_t set, set即一个信号集。既然是一个集合,就需要对集合进行添加/删除等操作。相关函数说明如下:// 将set集合置空// 将所有信号加入set集合// 将signo信号加入到set集合// 从set集合中移除signo信号// 判断信号是否存在除sigismember外,其余操作函数中的set均位传出参数。sigset_t类型的本质是位图。但不应该直接使用位操作,而应该使用上述函数,保证跨系统操作有效。原创 2024-01-04 21:49:04 · 856 阅读 · 1 评论 -
Linux无名管道和有名管道
无名管道是UNIX系统IPC(进程间通信)的最古老形式,所有的UNIX都支持这种通信机制。1、半双工,数据在同一时刻只能在一个方向上流动。2、数据只能从管道的一端写入,另一端读出3、写入管道中的数据遵循先入先出规则4、管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式5、管道不是普通文件,不属于某个文件系统,只存在于内存中。6、管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。原创 2023-12-28 22:34:18 · 964 阅读 · 1 评论 -
Linux进程替换(exec族函数)
其他代码类似使用,只是参数传递方式不一样,例如如果使用execlp函数,它与execl函数的第一个参数不一样,这里需要传入文件名,这时将第一个参数"/bin/ls"改成"ls"即可。使用man execlp查看帮助手册。原创 2023-12-27 16:52:15 · 367 阅读 · 1 评论 -
gcc 编辑器基本使用
gcc是由GNU开发的编程语言编辑器。gcc原本作为GNU操作系统的官方编辑器,现已被大多数类unix操作系统(如linux、BSD、Mac OS X等)采纳为标准的编辑器,gcc同样适用于微软的windows。在终端(Ubuntu)输入gcc --help,查看gcc有哪些选项。使用gcc -s 让hello.i文件生成hello1.s。比如:可以让hello.c直接转化为可执行文件。在下面提供一个例子:(-E -S -c选项)创建一个hello.c的文件进行编辑。文件里写入hello程序,保存退出。原创 2023-12-05 15:42:10 · 897 阅读 · 1 评论 -
Linux常用快捷键
clear或者ctrl+l。原创 2023-12-04 21:41:13 · 342 阅读 · 0 评论 -
Linux基础命令
z,gzip模式,不使用-z就是普通的tarball格式(一般处于选项位第一个)-C,选择解压的目的地,用于解压模式压缩模式常用组合:或 -zcvf: tar -zcvf test.tar.gz text1.txt text2.txt text3.txt解压模式常用组合:tar -zxvf test.tar.gz -C 路径。原创 2023-12-02 20:02:35 · 1383 阅读 · 1 评论