- 博客(8)
- 资源 (7)
- 收藏
- 关注
原创 linux 内核学习----------模块(LKM:loading kernel module)
可加载内核模块(LKM)Linux内核是模块化组成的,允许内核在运行的时候以模块的形式动态地添加或删除代码。 优点:保证基本内核小,动态增加和删除module_init /module_exitmodule_init 将模块的入口函数注册到系统中 module_exit 将模块的出口函数注册到系统中加载/卸载模块最简单的加载方法是insmod命令, 一般要以root身份运行命令 insmod
2017-06-30 17:25:33 1113
原创 pthread_exit ---- 不能使用局部变量作为参数返回
在使用pthread_exit 返回一个void型指针,该指针指向的数据必须不能是线程内部的局部变量,因为随着线程的退出,局部变量被摧毁,变成不确定的内存内容了。 下面的程序比较了使用线程内部的局部变量和全局变量作为pthread_exit返回指针指向的数据内容。其中全局变量可以返回正确的值,而局部变量设置的值已经不一样了。#include <stdio.h>#include <stdlib.h
2017-06-27 17:54:32 1035
原创 pthread_exit-----在linux主线程中的用途
大家都知道在一个线程中调用pthread_exit表示退出一个线程,并且pthread_exit的参数作为返回值提供给pthread_join函数获取。 那么如果在main函数创建了若干个线程后,在main函数最后调用pthread_exit会怎么样呢?已经创建的线程会不会随着main线程的退出而退出呢? 如果在main函数中调用的是exit,那么答案是所有线程随着main线程退出而退出。 但
2017-06-27 17:18:00 3001
原创 查看linux下进程的环境变量
AH-3f7440:/tmp/root# ps | grep dhcpc 9528 root 47976 S /opt/ah/bin/dhcpc10595 root 2796 S grep dhcpcAH-3f7440:/tmp/root# tr '\0' '\n' < /proc/9528/environUSER=rootLD_LIBRARY_PATH=/l
2017-06-22 15:37:55 4710
原创 Libevent学习-------定时器事件
定时器事件的创建Libevent 一般调用evtimer_new来定义一个定时器事件#define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg))从宏定义来看,这个事件和io、signal事件的区别在于fd项为-1,表示并不关注, 并且events项为0, 并不是想象中的EV_TIMEOUT. evtimer_ne
2017-06-14 17:58:54 8267
原创 Libevent学习----信号事件
信号是一种异步事件:信号处理函数和程序的主循环是两条不同的执行路线。很明显,信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽太久(信号在处理期间,系统不会再次触发它)。 上面这幅图是网上找到的,很好地从整体上表述了原理,摘抄到最前面 下图是本人自己总结的信号事件代码级原理图 下面是展开分析代码实现一、初始化信号事件 调用base->evbase = base->evsel->
2017-06-09 16:00:34 996
原创 Libevent 学习--------(eventop)事件多路分发器
一、事件多路分发器一般使用I/O复用接口。 Libvent中使用eventop 结构作为后端I/O复用的统一接口/** Structure to define the backend of a given event_base. */struct eventop {
2017-06-07 16:03:53 1920
原创 Libevent学习-----Reactor的事件处理机制
1. 普通函数的调用机制: 主程序调用某函数à函数执行,保存入参和返回寄存器地址,主程序等待à 函数处理完将结果和控制权返回给主程序 à主程序继续执行void func (){ return;}int main(int argc, char *argv[]){ int a,b;
2017-06-06 16:18:16 437
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人