我们专注于嵌入式
实验资料说明
国嵌所有培训班实验教材均为纸质
内部培训教材(样稿请见下页),并
配套有实验代码光盘,如需购买,请
嵌
国
登录国嵌淘宝官方店
http://enjoylinux.taobao.com 购买,
国嵌会提供全程技术支持,从其他途
径如购买到假冒国嵌实验教材,国嵌
不承担任何责任,也不提供任何技术
支持。
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
嵌入式 LINUX
应用开发班实验手册
嵌
国
国嵌 编著
嵌入式 LINUX 培训专用
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
实验 4-3 信号处理
l 实验目的:
学会使用自定义信号处理函数,处理信号
l 实验要求:
在进程中位SIGBUS注册处理函数,并向该进程发送SIGBUS
信号
l 实验器材:
软件:
安装了RHEL5的vmware虚拟机
嵌
硬件:PC机一台
l 实验代码与分析:
实验代码2-3-3 sig_bus.c
国
#include
#include
#include
/*自定义信号处理函数*/
void my_func(int sign_no)
{
}
int main()
{
if(sign_no==SIGBUS)
printf("I have get SIGBUS\n");
printf("Waiting for signal SIGBUS \n ");
/*注册信号处理函数*/
signal(SIGBUS,my_func);
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
pause();//将进程挂起直到捕捉到信号为止
exit(0);
}
代码分析
用signal系统调用为SIGBUS信号注册了信号处理函数
my_func,然后将进程挂起等待SIGBUS信号。所以需要向
该进程发送SIGBUS信号才会执行自定义的信号处理函数
l 实验步骤:
1. 进入实验代码目录2-3-3
嵌
国
进入目录2-3-3后可以看到实验参考代码sig_bus.c
2. 编译应用程序sig_bus.c
命令:gcc sig_bus.c –o sig_bus
用gcc命令编译sig_bus.c生成可执行文件sig_bus
3. 运行应用程序
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
先在一个终端中运行sig_bus,会看到进程挂起,等待信号
然后在另一个终端中,查找到运行sig_bus这个产生的进程
号,用kill命令发送SIGBUS信号给这个进程
嵌
国
我们可以看到前面挂起的进程在接受到这个信号后的处理
用自定义信号处理函数my_func来处理,所以打印了“I
have get SIGBUS“这样一句话
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
实验资料说明
国嵌所有培训班实验教材均为纸质
内部培训教材(样稿请见下页),并
配套有实验代码光盘,如需购买,请
嵌
国
登录国嵌淘宝官方店
http://enjoylinux.taobao.com 购买,
国嵌会提供全程技术支持,从其他途
径如购买到假冒国嵌实验教材,国嵌
不承担任何责任,也不提供任何技术
支持。
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
嵌入式 LINUX
应用开发班实验手册
嵌
国
国嵌 编著
嵌入式 LINUX 培训专用
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn
我们专注于嵌入式
实验 4-3 信号处理
l 实验目的:
学会使用自定义信号处理函数,处理信号
l 实验要求:
在进程中位SIGBUS注册处理函数,并向该进程发送SIGBUS
信号
l 实验器材:
软件:
安装了RHEL5的vmware虚拟机
嵌
硬件:PC机一台
l 实验代码与分析:
实验代码2-3-3 sig_bus.c
国
#include
#include
#include
/*自定义信号处理函数*/
void my_func(int sign_no)
{
}
int main()
{
if(sign_no==SIGBUS)
printf("I have get SIGBUS\n");
printf("Waiting for signal SIGBUS \n ");
/*注册信号处理函数*/
signal(SIGBUS,my_func);
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:550491596 技术交流 QQ 群:65212116
电话:028-88820953 网址:www.enjoylinux.cn