怎样学好Linux
文章平均质量分 93
半醒半醉日复日,花落花开年复年
这个作者很懒,什么都没留下…
展开
-
【Linux】15. IO多路转接之详解epoll(epoll接口函数,工作原理,阻塞、非阻塞、超时时间监控代码,epoll的工作模式:LT和ET,epoll+tcp)
目录epoll接口函数创建epoll操作句柄操作epoll的接口epoll等待接口epoll工作原理epoll是当今世界上性能最高的多路转接IO模型。不支持跨平台,只能在Linux操作系统使用epoll接口函数创建epoll操作句柄int epoll_create(int size);size:目前的size没有实际含义,epoll底层采用扩容的方式。注意:size不要传入小于0的数字返回值:epoll的操作句柄epoll_create创建的epoll操作句柄,本质上是在内核当中创建stru原创 2022-02-23 22:08:25 · 750 阅读 · 0 评论 -
【Linux】14.IO多路转接之详解poll
目录poll:地位不如select,因为select可以跨平台,性能又不如epoll接口函数poll的优缺点poll阻塞监控代码poll非阻塞监控代码poll超时时间监控代码poll:地位不如select,因为select可以跨平台,性能又不如epoll接口函数int poll(struct pollfd* fds, nfds_t nfds, int timeout);fds:事件结构数组,poll函数是通过用户传入的事件结构数组进行监控的,也是轮询监控的方式原创 2022-02-21 12:26:42 · 683 阅读 · 0 评论 -
【Linux】13. IO多路转接之详解select(select原理、接口函数、阻塞监控、非阻塞监控、超时时间监控、监控多个文件描述符、解决socket_tcp单线程存在的问题、select优缺点)
select原理:程序员将多个文件描述符以及期望的IO事件告知给select(告知给内核),让内核轮询遍历文件描述符是否产生了程序员期望的IO事件。一旦发现有某个文件描述符就绪(期望的IO事件发生了),则返回该文件描述符,让用户执行相应的事件处理。接口:int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);nfds:使用该参数告知select函数,轮询遍历原创 2022-02-14 21:41:33 · 980 阅读 · 0 评论 -
【Linux】12. 高级IO之五种IO模型(阻塞IO,非阻塞IO,信号驱动IO,异步IO,多路转接IO)
五种IO模型:阻塞IO,非阻塞IO,信号驱动IO,异步IO,多路转接IO什么是IO?input & outputIO的过程:(1)等待资源就绪;(2)拷贝数据例如:TCP_socket编程:recv(newsock, buf, sizeof(buf) - 1, 0);(1) 从TCP的接收缓冲区当中拷贝数据,TCP的数据来源于TCP接收缓冲区。如果TCP接收缓冲区当中没有数据,调用recv函数就会阻塞等待。(2)拷贝数据到buf当中LINUX中进程无法直接操作I/O设备,其必须通过系统原创 2022-02-11 20:52:29 · 504 阅读 · 0 评论 -
【Linux】11. 常见操作错误的解决办法
目录1. E325:ATTENTION错误1. E325:ATTENTION错误E325:ATTENTION错误:vim编辑异常退出的错误,这时系统会创建一个交换文件swap file以保证文件的安全性。例如:在vim编辑时突然按了ctrl+z,当再次打开.c文件时就会出现:E325:ATTENTION错误...原创 2022-02-11 20:50:44 · 10982 阅读 · 2 评论 -
【Linux】10. 线程(线程概念、线程控制(创建、终止、等待、分离)、线程安全、死锁、条件变量、生产者与消费者模型、信号量(互斥+同步)、线程池)
目录1. 线程概念1.1 pid & tgid1.2 线程标识符1. 线程概念1.1 pid & tgidpid:线程号(轻量级的进程号),内核当中是没有线程的概念的,称之为轻量级进程(lwp),线程的概念是c标准库当中的概念。tgid:线程组id,对标的就是进程id。主线程:pid = tgid,一个进程中有且只有一个主线程工作线程:同一个线程组当中的tgid是相等的,标识的是同一个进程。pid是不同的,标识不同的线程。1.2 线程标识符线程标识符:线程独有空间的原创 2021-12-26 17:48:37 · 2161 阅读 · 0 评论 -
【linux】9. 将linux中的文件代码推送到 gitee 远端仓库
将linux中的文件代码推送到 gitee远端仓库(1) 在gitee创建仓库(2) git clone ssh链接 (ssh链接就是第(1)步自己仓库中红框圈起来的ssh链家,直接复制到这里即可)(3) git add * (标记目录中的所有文件)(4) git commit -m "说明" (关于推送文件的说明)(5) git push origin master原创 2021-12-05 15:51:21 · 1388 阅读 · 0 评论 -
【Linux】8. 进程信号(信号的种类、产生方式、注册、注销、处理方式,信号的捕捉流程、阻塞、volatile关键字)
目录1. 信号的概念2. 信号的种类3. 信号的产生方式3.1 硬件产生3.2 软件产生3.2.1 kill命令3.2.2 kill函数3.2.3 raise函数3.2.4 abort函数3.2.5 alarm函数4. 信号的注册5. 信号的注销6. 信号的处理方式6.1 默认的处理方式:SIG_DFL(signal default)6.2 忽略处理:SIG_IGN(signal ignore)6.3 自定义处理:更改信号的处理方式6.3.1 signal函数6.3.2 sigacion函数7. 信号的捕捉原创 2021-11-25 09:58:08 · 413 阅读 · 0 评论 -
【Linux】7. 进程间通信(详解匿名管道、命名管道、共享内存)
目录1. 管道1.1 匿名管道1.1.1 管道的符号1.1.2 管道的本质1.1.3 管道的接口1.1.4 管道的特性1.1.5 如何将文件描述符设置成非阻塞1.1.6 验证文件打开方式的宏为位图的使用方式1.1.7 匿名管道的非阻塞特性 读设置为非阻塞 &nbs原创 2021-11-24 10:55:52 · 746 阅读 · 1 评论 -
【Linux】6. 基础IO(C语言文件操作接口、系统调用文件操作接口、文件描述符、文件流指针、重定向、动态库和静态库、动态链接和静态链接、软硬链接)
目录1. C语言的文件操作接口1.1 fopen1.2 fread1.3 fwrite1.4 fseek1.5 fclose1.6 示例2. 系统调用的文件操作接口2.1 open2.1.1 打开的文件存在,则使用下面的接口2.1.2 打开的文件不存在,则使用下面的接口2.2 read2.3 write2.4 lseek2.5 close2.6 示例3. 文件描述符4. 文件描述符和文件流指针的区别5. 重定向5.1 重定向的本质5.2 重定向的接口5.3 重定向的实现代码6. 动态库和静态库6.1 动态库原创 2021-11-22 19:10:50 · 1274 阅读 · 0 评论 -
【Linux】5. 进程控制 (进程创建、进程终止、进程等待、进程程序替换)
目录1. 进程创建2. 进程终止2.1 进程退出的场景:2.2 进程退出的方法2.2.1 main函数return2.2.2 _exit函数2.2.3 exit函数2.2.4 ctrl+c2.3 回调函数 atexit2.4 刷新缓冲区的办法3. 进程等待3.1 进程等待的作用3.2 进程等待的方法3.2.1 wait函数3.2.2判断当前程序是正常退出或者异常退出?3.2.4 验证wait函数3.2.5 waitpid函数4. 进程程序替换4.1 进程程序替换的原理4.2 进程程序替换的函数:exec函数原创 2021-11-12 17:34:56 · 1102 阅读 · 0 评论 -
【Linux】4. 进程概念 (僵尸进程、孤儿进程、环境变量、进程虚拟地址空间)
目录1. 冯诺依曼2. 操作系统3. 进程概念3.1 进程和程序的区别3.2 从操作系统内核角度看进程3.3 查看进程的命令3.4 进程状态3.5 进程切换3.6 fork创建子进程4. 僵尸进程4.1 模拟僵尸进程4.2 僵尸进程的危害4.3 怎样处理僵尸进程4.4 总结5. 孤儿进程6. 环境变量6.1 为什么需要环境变量?6.2 常见的环境变量6.3 环境变量的文件6.4修改环境变量6.5 环境变量的组织方式6.6 代码获取环境变量7. 进程虚拟地址空间7.1 如何将虚拟地址转化为物理地址7.1.1原创 2021-11-08 22:57:01 · 455 阅读 · 0 评论 -
【Linux】3. yum、vim、gcc/g++、gdb调试、make/makefile
1. 软件包管理器yum1.1 罗列软件包1.2 查找软件包1.3 安装软件1.4 删除软件2. 文件传输2.1 rzsz2.2 Xftp3. vim - 编辑器3.1 vim的基本概念3.2 vim的基本操作3.2.1 进入vim3.2.2 模式切换3.2.3 vim正常模式命令集(1)移动光标(2)删除(3)复制与粘贴(4)替换(5)撤销(6)更改(7)跳动3.2.4 vim底行模式命令集(1)搜索(2)查找(3)显示行号3.3 vim 中批量添加注释3.3.1 批量注释3.3.2取消注释原创 2021-11-06 12:15:00 · 667 阅读 · 0 评论 -
【Linux】2. 权限管理
目录1. 切换用户2. 访问权限和文件类型2.1 文件访问者的分类:2.2 权限分类2.3 文件类型3. 用户更改文件或者文件夹的权限(chmod)3.1 用户 +/- 字符权限的方式3.2 八进制数字的更改方式4. 权限对于文件或者文件夹的影响4.1 文件4.2 文件夹4.3 root用户5. 更改所属用户或者所属用户组5.1 更改用户所有者(chown)5.2 更改用户所属组(chgrp)若有错误,请大家多多指正!谢谢大家!1. 切换用户Linux下有两种用户:超级用户(root)、普通用户超级用原创 2021-11-05 15:30:00 · 127 阅读 · 0 评论 -
【Linux】1. 基本命令
Linux1. useradd , passwd2. ls , pwd , cd(1) ls 命令(list)(2)pwd 命令(3)cd 命令(change directory)3. touch , mkdir , rm , rmdir(1)touch 命令(2)mkdir 命令(make directory)(3)rm 命令(remove)(4)rmdir 命令(remove directory)4. man5. echo , cat , cp , mv(1) echo 命令(2) cat 命令(3)原创 2021-11-04 14:31:32 · 379 阅读 · 0 评论