Linux
文章平均质量分 93
C++下等马
这个作者很懒,什么都没留下…
展开
-
多路转接IO
常见的多路转接技术有 select、poll 和 epoll,它们都是在 Linux 系统中使用的。Select特点:最古老的一种多路转接方式,在 UNIX 系统中广泛使用。优点:跨平台支持良好,适用于小规模的 I/O 操作。缺点:效率低下,无法处理大量的文件描述符。适用场景:适用于小规模的 I/O 操作,对性能要求不高的情况。Poll特点:较 Select 更高效。优点:提供了更高的效率,能够处理大量的文件描述符。缺点:随着文件描述符数量的增加,性能仍会下降。适用场景。原创 2024-04-30 14:43:20 · 663 阅读 · 0 评论 -
非阻塞IO
这是在打开文件时设置非阻塞的方式,如果要将已经打开的某个文件或套接字设置为非阻塞,此时就需要用到。原创 2024-04-25 15:20:36 · 970 阅读 · 0 评论 -
UNIX环境高级编程->高级IO(概念篇)
这篇文章主要介绍五种IO模型,分别是:IO,就是Input(输入),Output(输出)的简称。 最简单的使用C语言调用函数时,就是向显示器输出数据。 调用函数时,就是从标准输入键盘读入数据。这就是最基本的IO,一般称之为标准IO。还有一些文件IO。比如,。这些函数,从文件中输入或者向文件中输出时,这也是IO操作,一般称之为文件IO。在比如网络中套接字中的,这些函数,从socket套接字中输入或者输出时,都是IO操作,一般称之为网络IO。而应用层在调用,,这些函数时,本质是把数据从用户层拷贝到操作系统内核层原创 2024-04-25 14:28:12 · 703 阅读 · 0 评论 -
从零实现一个Http服务器
HTTPServer项目是一个基于C++编写的简单的HTTP服务器实现,用于处理客户端的HTTP请求并提供相应的服务。该项目使用了Socket编程来实现服务器与客户端之间的通信,通过监听指定的端口并接受客户端连接,然后解析HTTP请求并生成对应的HTTP响应。HTTPServer项目是一个简单而完整的HTTP服务器实现,适合于学习和理解基本的网络编程和HTTP协议处理原理,也可以作为基础框架进行扩展,实现更复杂的功能和应用场景。开发环境:Linux-Centos7 + vscode。原创 2024-04-02 21:14:09 · 955 阅读 · 0 评论 -
线程互斥与同步
对临界资源的保护,是每一执行流都要遵守的,也就是说多线程要访问临界,每一个线程都必须要先申请锁,并且这些线程看到的是同一个互斥量。原创 2024-03-04 15:48:52 · 727 阅读 · 0 评论 -
Linux多线程
这篇文章主要介绍线程的概念和线程控制。原创 2024-02-28 19:34:16 · 1020 阅读 · 0 评论 -
Linux 基础IO
当文件存储在磁盘当中时,我们将其称之为磁盘文件,而当磁盘文件被加载到内存当中后,我们将加载到内存当中的文件称之为内存文件。磁盘文件由两部分构成,分别是文件内容和文件属性。然后fprintf,fread,fwrite等函数通过传入对应的FILE* 指针找到对应的FILE结构体,从FILE中拿到对应的文件描述符,最后通过文件描述符对文件进行操作。stdout 和 stderr 对应的默认都是显示器文件,但是区别就在于:重定向的是文件描述符是1的标准输出流,而并不会对文件描述符是2的标准错误流进行重定向。原创 2024-01-24 19:30:34 · 874 阅读 · 0 评论 -
Linux-->进程概念
将程序加载到内存中并执行的时候,操作系统为该程序创建一个进程,进程中包含程序的代码、数据、PCB(用于描述和管理进程状态的数据结构),进程地址空间(描述进程在内存中布局的数据结构),页表(管理进程内存的重要数据结构)等。操作系统创建进程时,会创建一个PCB(进程控制块)的数据结构,操作系统从此管理进程,不会去管理进程的程序,将其转换对特定数据结构的管理,先将进程状态描述起来,在将其用特定的数据结构组起来(Linux下用的是双向链表)。通过页表与子进程建立映射关系,从而实现了进程之间的独立性。原创 2024-01-13 12:08:08 · 939 阅读 · 0 评论 -
Linux下进程控制
前十六位不用关心,后是6位前8位表示进程正常的退出码,最后七位表示进程异常收到的信号,退出码和信号中间的一位是core dump标志位,和信号有关,这里不用深究。exit和_exit 的区别,exit是c语言的进程终止的函数,而_exit是Linux系统调用接口的函数,c语言在实现exit函数时会封装_exit。第一个参数是要执行程序的路径,第二个参数是一个指针数组,数组当中的内容表示你要如何执行这个程序,数组以NULL结尾,第三个参数是你自己设置的环境变量。不会执行,进程就终止了。如果没有子进程退出,原创 2024-01-09 20:34:36 · 1246 阅读 · 0 评论 -
冯诺依曼体系结构
CPU从内存中获取信息,对信息进行各种处理,将其返回到内存中,网卡就可以从内存中获取已经处理好的信息了。然后在网络中经过一系列的处理,将信息发送到朋友的网卡中,朋友从网卡中获取到的信息加载到内存中,CPU再从内存中获取信息,进行处理,将处理好的信息返回到内存中,然后朋友的显示器读取内存中的数据,就能显示到朋友的显示器中了。运行这个可执行程序的时候,首先肯定是先将程序加载到内存中的,代码里面的各种指令,要由CPU去执行的,CPU会去内存中读取数据然后在做处理。冯诺依曼体系结构主要由五部分组成 分别是。原创 2023-12-09 15:11:39 · 815 阅读 · 0 评论 -
【Linux 进度条小程序】缓冲区+回车换行
它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。如果没有fflush函数刷新缓冲区,那么打印的结果会一直存到缓冲区中,程序结束了什么也看不到。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。了解了上面的三个概念后可以简单的实现一个倒计时小程序。一般我们的键盘上的Enter键是回加换行键。第二个例子比第一个例子少一个\n,则是。回车和换行是不同的两个概念。原创 2023-12-06 20:41:55 · 578 阅读 · 0 评论 -
Linux开发工具的使用(vim、gcc/g++ 、make/makefile 、gdb)
在Linux中 系统把这些函数都实现在一个名为libc.so.6(Linux中的一个动态链接库 包含了标准c库的实现)的文件中 在没有特别指定时 gcc会到系统默认的路径’‘/usr/lib’'下进行查找,也就是链接到libc.so.6库函数中去 这样就能实现函数printf了 这也就是链接的作用。我们在c程序中,并没有实现printf函数,且在预编译中包含的头文件stiod.h中也仅仅只是有该函数的声明 并没有定以实现该函数 那么printf函数在哪里实现的呢?原创 2023-11-05 21:53:27 · 1187 阅读 · 5 评论 -
Linux下向Github仓库推送
Git是目前从开发人员到设计人员的版本控制技术。gitee是国内社交代码托管平台。这是一个你可以玩和实验的地方。在这里你可以找到最令人难以置信的开源信息、新兴技术、特性和设计。这是一个学习新事物和参与的地方。你可以把代码放在那里工作或上学,你可以获取一些你想进一步探索的代码。你甚至可以直接从你的存储库免费托管网站。出现下面信息是要验证身份 执行下面这两条语句就可。同步到远端服务器上即推送到GitHub上。如果已经有git则不用安装 输入。出现git版本则说明已经安装好了。将项目下载到本地目录下。原创 2023-11-14 15:49:21 · 571 阅读 · 2 评论 -
Linux权限
当一个非root用户想执行root权限时 在指令前加上sudo即可 也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。给目录文件中的other用户设置的一个权限位 具有权限x的全部属性同时对目录权限进行进一步限定。对于文件和目录来说 u/g/o 就是由root用户和f非root账号扮演的。什么目录中拥有者的权限为rwx(可读 可写 可执行)当一个目录设置位粘滞位时 则该目录下的文件只能由。所属组的权限为rwx(可读 可写 可执行)rwx r-x r-x 就是新建目录的权限。原创 2023-10-27 15:15:33 · 112 阅读 · 9 评论 -
Linux结构&基本命令
Linux整体的目录结构时一颗多叉树。根据树的概念 ,可以得出在Linux中在Windows中路径分隔符为路径的本质就是在这颗多叉树中搜索 从任意一个节点到另外一个结点的路径都是具有唯一性的因此路径是具有唯一性的从根目录/开始到任意一个叶子文件的路径 称为绝对路径从自身所在的目录到一个叶子文件的路径 称为相对路径。原创 2023-10-02 11:57:29 · 118 阅读 · 15 评论