posix -- 4




概述在下面两篇日志中,我们详细介绍了 linux 异步 IO 的两种实现:POSIX AIO -- glibc 版本异步 IO 简介 linux AIO -- libaio 实现的异步 IO 简介及实现原理 在文章中,我们清楚 libaio 实现的异步 IO 需要 linux 内核版本支持,然而,他却比 glibc 实现的异步 IO 具有很多优势,如资源使用上、执行效率上以及设备的协调使用等方面均有着明显的优势无论如何,他毕竟是 linux 内核原生支持的异步 IO 嘛也因此,nginx 选择了 libaio 实现的异步 IO 实现事件的异步处理,那么他是怎么做的呢? 异步 IO 初始化 -- ngx_epoll_aio_initngx_epoll_aio_init 函数是 nginx epoll 模块初始化的一个重要环节,他决定了 nginx 是否使用异步 IO 来实现事件的读写响应// static void ngx_epo
#linux    #龙潭书斋    #apue    #posix   

200x200


概述近日研读 nginx 源码,读到 daemon 进程的创建觉得守护进程的创建过程还是有很多地方需要注意的,所以单独拿出来写一篇博客 在Unix&n

#技术帖    #linux    #unix    #龙潭书斋   
在信号的发送与捕捉中,我们对 sleep 函数进行了实现,但是最终,我们的实现仍有问题,那就是在处理我们的 SIGALRM 信号的过程中,如果开始执行其他的信号,之后回到我们的信号处理函数,然后做函数间跳转,进程行为会不可靠  sleep 函数unsigned int sleep(unsigned int seconds); 定义于 unistd.h 中返回未休眠够的秒数 执行 sleep 后进程被挂起,直到满足下列条件之一:已经过了 seconds 的秒数调用进程捕捉到一个信号并从信号处理程序返回 POSIX 的实现static void sig_alrm(int signo) { /* do nothing*/ } unsigned int sleep(unsigned int nsecs) { struct sigaction newact, oldact; sigset_t newmask, oldmask, suspmask; unsigned int unslept; newact.sa_handler = sig_alrm; sigemtyset(&newact.sa_mask); newact.sa_flags = 0
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号