摘要: 上一篇分析了linkfd.c的lfd_linker()函数中的while在不考虑信号中断的情况下一直在执行(执行的是虚拟网卡的读写和数据的发送接收)。 而决定是否一直循环执行的linker_term变量被信号处理函数改变了,下面分析linker_term在哪些信号处理函数中被改变了,以及信号处理函数在干嘛。 在linkfd.c中, /* Termination flag */ static voi... 阅读全文
posted @ 2012-09-24 21:43 helloweworld 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 头文件:#include <signal.h>原型:int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);参数:signum是除了SIGKILL和SIGSTOP之外的任何信号;act非空,新的动作(信号到来时执行的函数)存在act中,如果旧的动作非空,旧动作存在oldact中;返回值:sigaction() returns 0 on success and -1 on error.sigaction结构体如下:struct sigaction { void (*sa_hand 阅读全文
posted @ 2012-09-24 15:19 helloweworld 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 在文件linkfd.c文件中,有从虚拟网卡读出数据然后发送,将接收到的数据写入网卡过程。 注意,在client和server端,上面的两个过程都有,意思可以说是两端对等,看下图。 下面分析对虚拟网卡的读写非阻塞问题,在linkfd.c的lfd_linker函数中,(client和server都是用该函数完成对虚拟网卡的读写)。 主要是下面代码: while( !linker_term )//w... 阅读全文
posted @ 2012-09-24 11:38 helloweworld 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-09-24 10:16 helloweworld 阅读(287) 评论(0) 推荐(0) 编辑