![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux基础
是会魔法的friends
这个作者很懒,什么都没留下…
展开
-
select、poll、epoll的区别
使用限制:select关注的文件描述符最多为1024,而poll和epoll关注的文件描述符可以达到系统允许打开的最大值。使用效率:select、poll每次都要将文件描述符从用户态转化为内核态,而epoll可以直接从内核读取、更加高效。select、poll每次都要将所有的文件描述符返回,时间复杂度为O(n)。而epoll只将就绪的文件描述符返回,时间复杂度为O(1),因为epo...原创 2019-08-05 17:55:07 · 79 阅读 · 0 评论 -
进程间的通讯方式
信号 管道(有名、无名管道)有名管道用于任意两个进程、无名管道用于父子进程。 信号量(注意PV操作) 消息队列(数据有类型,先进先出原则) 共享内存(统一内存映射到不同进程、看成自己的一部分、最快) socket 网络编程。...原创 2019-08-26 17:01:41 · 116 阅读 · 0 评论 -
手写一个简单的makefile
main: main.o text.o list.o vector.o<Tab> gcc -o main main.o text.o list.o vector.omain.o: main.c<Tab> gcc -c main.ctext.o: text.c<Tab> gc...原创 2019-08-26 16:14:18 · 377 阅读 · 0 评论 -
如何查看共享内存?
查看共享内存:ipcs -m删除共享内存:ipcrm -m shmid查看信号量:ipcs -s删除信号量:ipcrm-s semid查看消息队列:ipcs -q删除消息队列:ipcrm -q queueid原创 2019-08-26 15:59:46 · 2623 阅读 · 0 评论 -
linux系统调用过程
产生中断->保存现场信息->将系统调用号写入到eax寄存器中->切换到内核态->取出系统调用号、查看系统调用表->调用内核函数->将结果写入eax寄存器->返回用户态->在eax寄存器中读取返回值。...原创 2019-08-26 15:01:01 · 113 阅读 · 0 评论 -
linux查看系统状态的命令
查看系统使用内存的命令:free 查看系统版本的命令:cat /proc/version 查看进程状态的命令:ps aux 查看CPU的命令:top 查看系统启动服务的命令:service...原创 2019-08-26 14:42:38 · 295 阅读 · 0 评论 -
MySQL中varchar与char的区别
char是一种固定长度的类型,大小为255。varchar是一种可变长度类型,大小为65535。varchar(50)中50的涵义:最多存放50个字符。原创 2019-08-11 17:30:52 · 154 阅读 · 0 评论 -
MyISAM和InnoDB的主要区别
MyISAM不支持事物,InnoDB支持事物。 MyISAM是表锁的,不支持高并发,InnoDB是行锁的,支持高并发。 InnoDB支持外键,MyISAM不支持外键。 MyISAM只缓存索引,不缓存真实数据。InnoDB缓存真实数据 MyISAM关注点是性能,InnoDB关注点在于事物 MyISAM的表小,InnoDB的表大。...原创 2019-08-11 16:59:41 · 90 阅读 · 0 评论 -
gdb常用调试命令
l 显示代码 b+行号 设置断点 info break 进入断点,显示断点信息 delete 删除断点 r 运行代码 n 单步执行 下一行 c 继续执行 s 进入函数 f 跳出函数 p 打印 q 退出 bt 显示函数调用栈...原创 2019-08-09 18:38:37 · 279 阅读 · 0 评论 -
gcc与g++的区别
对于c和cpp文件,g++统一按照c++的语法来编译,对于C和cpp文件,gcc分别按照C和cpp的风格来编译 gcc默认没有STL库,要使用C++中的STL,需要添加命令:-lstdc++。g++不需要。 gcc是编译工具的集合,g++仅仅是c++编译器。...原创 2019-08-09 18:23:18 · 301 阅读 · 0 评论 -
fcntl
复制文件描述符 设置文件描述符标志位 设置文件描述符与之对应的状态标志、如阻塞非阻塞 设置异步IO相关操作 设置文件锁原创 2019-08-08 17:26:32 · 330 阅读 · 0 评论 -
epoll的内核实现以及它的数据结构
epoll_create:创建内核事件表用来存放描述符和事件。它的数据结构为:struct eventpoll。其中包括了两个重要成员,一个是红黑树,也就是内核事件表。另一个重要成员是用于存放就绪事件的队列。epoll_ctl:红黑树添加节点操作:ep_insert。红黑树移除节点操作:ep_remove。红黑树修改节点操作:ep_modify。每个节点都是一个描述符和事件的结构体。epo...原创 2019-08-06 12:20:16 · 2410 阅读 · 0 评论 -
epoll的ET模式和LT模式
LT模式:epoll默认的工作模式。如果描述符上的事件就绪,但是它的数据没有处理完,或者没有处理、epoll下次会提醒他,让他处理。换个说法,如果fd对应的缓冲区有数据,就会调用一次epoll_wait,直到数据全部被处理完。ET模式:如果描述符上的事件就绪,但是它的数据没有处理完,或者没有处理。epoll下次不会提醒它,也就是说,在ET模式下,epoll只会对事件提醒一次,它就必须要将全部数...原创 2019-08-05 18:27:42 · 1083 阅读 · 0 评论 -
线程相关函数
创建线程:int pthread_create 结束线程:int pthread_exit 等待线程:int pthread_join 取消线程:int pthread_cancel原创 2019-08-26 18:30:29 · 118 阅读 · 0 评论