![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
Obito_uchiha
这个作者很懒,什么都没留下…
展开
-
获取symbol
1. symbol_get(kallsyms_on_each_symbol)2. symbol_get(kallsyms_lookup_name)3. cat /proc/kallsyms4. cat /boot/System.map-<uname -r>原创 2021-07-16 22:17:52 · 325 阅读 · 0 评论 -
【Poll】Linux Poll源码
上一篇博客大致分析了select的源码,其实poll和select的实现基本上是相同,只是poll改进了一些select的缺点 1. select可以监听的描述符是有限的,默认是1024个,因为select使用fd_set这个数据结构来保存要监听的描述符,其实fd_set就是一个unsigned long数组,这个数组默认是16,也就是16*8*8=1024。具体可以参考我上一篇博客Linux Select源码。2. 每次select返回后,response fd_set都被重置了,所以用户态的程.原创 2021-02-08 17:26:52 · 322 阅读 · 0 评论 -
【Select】Linux Select源码
在网络编程中,经常用到selec系统调用来判断套接字上是否存在数据可读,或者能否向一个套接字写入数据。其原型为:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);Note: select,poll和epoll监听的fd一定是需要实现poll函数,例如ext3,xfs这些文件系统都没有实现poll函数,所以这些文件系统中被打开的文件是不能使用selec原创 2021-02-07 11:21:04 · 704 阅读 · 0 评论 -
Epoll的水平触发和边缘触发
Epoll水平触发和边缘触发的区别 (网上截图的,觉得写的挺好的)水平触发的例子 Client端写HelloWorld给server,但是Server每次只读取5字节,所以当Client写10字节的内容给Server,第一次读取后,Server依然会有EPOLLIN的事件,然后读取剩下的5字节。 代码没有将已连接的connection保存在数组中或链表中,只是一个demo。//server code#include <stdio.h>#include...原创 2020-10-21 09:57:13 · 522 阅读 · 0 评论 -
线程,进程与信号
当一个进程有多个线程的时候,通过kill 命令来给某个进程发送信号的时候,那到底是谁来响应这个信号呢?一定是主线程么?同时,还要知道信号是可以打断一些阻塞函数的(accept,read ...)实验: 首先我们使用sigaction函数来注册一个信号处理函数,来响应SIGTERM信号,然后我们创建一个线程,创建线程完毕后,我们在主线程中,使用pthread_sigmask函数来屏蔽SIGTERM信号。当程序跑起来后,我们使用kill 命令来向进程发一个SIGTERM信号,查看是否是子线程来..原创 2020-10-16 13:19:14 · 285 阅读 · 0 评论 -
Linux signal 中断 waitpid 系统调用
代码文件test.c#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <errno.h>#include <sys/wait.h>#include <signal.h>void handler(int signo){ printf("i receive a sig,sig number is %d\n",signo);}in原创 2020-10-14 17:42:16 · 394 阅读 · 0 评论 -
【Docker Network 2】 Docker Swarm overlay
在docker 1.12 之后,可以直接使用Swarm,无需再进行安装。从上一节中看到 docker network ls 命令只会显示3种网络模式。先简单介绍Swarm 的命令swarm init 在管理节点上创建一个节点swarm join 加入一个新的节点到已有集群 docker swarm join-token worker 查看加入一个worker到集群的命令 docker swarm join-token manager 查看一个加入manager到集群...原创 2020-07-19 20:00:14 · 370 阅读 · 0 评论 -
【Docker network 1】 docker 网络模式详解
Docker 网络模式 在刚安装docker后,docker默认是拥有三种docker网络模式 1. Bridge(在安装docker后,宿主机会多出一个网络设备docker0。默认情况下容器的网络模式为bridge,即所有的container都连接在docker0上,实现二层互通。当然取决enable-icc的值。docker0的enable-icc 为true) --net=bridge 2. none (创建container后,网络配置没有指定,需要手动配置,...原创 2020-07-19 17:28:20 · 2166 阅读 · 0 评论 -
sk_buff 常用的方法总结
1. alloc_skb()作用: 1. 创建sk_buff变量,并为该变量分配内存 2. 创建一个数据缓冲区,用来存放数据包。源码:static inline struct sk_buff *alloc_skb(unsigned int size, gfp_t priority){ return __alloc_skb(size, priority, 0, -1...原创 2019-09-19 19:32:33 · 595 阅读 · 0 评论 -
Linux Bridge
1. 如何创建Bridge brctl addbr br0 创建bridge brctl addif br0 eth0 将eth0物理网卡附加到Bridge ifconfig eth0 0.0.0.0 取消eth0的ip地址 ifconfig br0 192.168.100.2 netmask 255.255.252.0 up 给br0...原创 2019-08-06 20:20:38 · 442 阅读 · 0 评论