摘要: 1、如果同时向一个epfd中添加两次一样的描述符会怎么样? 如果相同的文件描述符,epoll_ctl()会返回错误-1,设置错误码 EEXIST。但是如果是使用(dup,dup2,fcntl)创建某个文件的副本描述符,即虽然是同一个文件描述符fd不同。这种情况是可以同时加入的,且两个事件会被同时触发 阅读全文
posted @ 2022-03-30 14:07 核心已转储 阅读(303) 评论(0) 推荐(0) 编辑
摘要: epoll 提供了边沿触发 (ET) 和电平触发 (LT)的事件触发方式。两种机制的区别如下: 先假设出现如下情况: 某个有一个管道已经建立连接,fd加入了epoll中,监测可读事件。 管道的写入者,写入了2KB的数据。 读取者调用epoll_wait()成功返回了事件。 但是管道的读取者只读取了1 阅读全文
posted @ 2022-03-30 11:30 核心已转储 阅读(837) 评论(1) 推荐(0) 编辑
摘要: 添加套接字: int epoll_ctl(int epfd , int op , int fd , struct epoll_event * event ); 参数详解: epfd:就是指定epoll文件描述符。 op : 需要执行的操作,添加,修改,删除,详细如下。 EPOLL_CTL_ADD 在 阅读全文
posted @ 2022-03-30 10:15 核心已转储 阅读(5484) 评论(0) 推荐(1) 编辑
摘要: hello world. 阅读全文
posted @ 2022-03-30 10:13 核心已转储 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 关键API: epoll_wait, epoll_pwait, epoll_pwait2 等待epoll中的I/O事件发生。 概要: #include <sys/epoll.h> int epoll_wait(int epfd, struct epoll_event *events, int max 阅读全文
posted @ 2022-03-29 23:34 核心已转储 阅读(10447) 评论(0) 推荐(0) 编辑
摘要: 进程收到信号会被处理,但是处理信号的线程是哪一个呢?主线程,注册信号函数的线程,还是任意的子线程。 结论: 哪个线程收到的信号,信号处理函数就在哪个线程上面执行,和信号函数是哪个线程注册的无关。如果是其它进程发给当前进程的,那就都是在主线程处理。 测试代码: 1、创建两个子线程,子线程1注册信号函数 阅读全文
posted @ 2022-03-29 20:47 核心已转储 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 异常打印: 有时候在生产环境中因为种种原因,进程coredump以后没有生成core文件。但是一般会在syslog中都会有如下的打印,这将是我们分析异常的关键。 Mar 26 10:17:37 ywh-virtual-machine kernel: [ 1818.141888] a.out[3425 阅读全文
posted @ 2022-03-26 11:11 核心已转储 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 起因: 某天,公司某祖传业务coredump了,最终定位的原因居然是因为select。 阅读全文
posted @ 2022-03-26 00:12 核心已转储 阅读(67) 评论(0) 推荐(0) 编辑
摘要: epoll 提供的api和poll类似:同时监控多个文件描述符的事件变化。同时epoll可以被设置为水平触发或者边缘触发。(这两种触发的区别后面会详细的讲解)。从用户空间去理解,可以将一个epoll实例看做,内核中创建了两个队列,一个等待队列和一个就绪队列。 头文件包含: #include <sys 阅读全文
posted @ 2022-03-25 12:28 核心已转储 阅读(776) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示