免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2593 | 回复: 10
打印 上一主题 下一主题

[C] 大侠们,救救小弟吧。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-05 18:51 |只看该作者 |倒序浏览
我是个刚学APUE的菜鸟,敢请问各位大侠,能不能出谋划策帮帮小弟,怎么才能更好的理解APUE中的信号问题。先前还不是异步处理的时候还挺顺利的。到信号这一块了,越看越晕,希望能帮帮小弟。先在这谢谢了。
坐着等。。。。

论坛徽章:
0
2 [报告]
发表于 2010-09-05 19:04 |只看该作者
我最近在重读APUE,有什么问题一起讨论呀

论坛徽章:
0
3 [报告]
发表于 2010-09-05 19:10 |只看该作者
十分感谢,你是重读的。能不能在这传授一下你学信号时的感觉和经验啊。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
4 [报告]
发表于 2010-09-05 19:23 |只看该作者
信号处理的本质是内核将应用程序的执行序列做了次切换.从main切换到信号函数.

论坛徽章:
0
5 [报告]
发表于 2010-09-05 19:27 |只看该作者
谢谢,希望能再说的更明一些。小弟实在万分感谢。。。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
6 [报告]
发表于 2010-09-05 19:33 |只看该作者
你就想想2个main就好了.
内核想运行谁就运行谁.
只不过开始是那个默认的main.
信号只在有需要的时候"调度".
因为一次信号总是通过操作系统内核发给进程的.
发给的这个过程就是在内核中,在单处理器的情况下.处理器不可能同时跑应用程序和内核.
所以发的过程中进程应用程序本身是被打断的.而这个时候内核有能力将这个被打断的程序偷梁换柱一下.变成跑信号处理程序.

论坛徽章:
0
7 [报告]
发表于 2010-09-05 19:48 |只看该作者
十分感谢,好像有那么点感觉了。还要问一下,信号在什么情况下用得最多。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
8 [报告]
发表于 2010-09-05 19:57 |只看该作者
你看看几种信号的定义就知道.
可以用于在用户空间处理各种异步事件(或者叫突发事件)的情况下.
比如有键盘按下.或者有其他进程发个通知过来或者定时处理一个任务(这个不同于休眠).

论坛徽章:
0
9 [报告]
发表于 2010-09-05 20:03 |只看该作者
本帖最后由 insnowind 于 2010-09-05 20:05 编辑

通俗一点吧,可以这么讲。

你是一个应用程序,你当前工作的环境是你的公司。
每天,你都在认真的做自己的事情,但是呢
在一个公司里,你要面对同事领导等,
同事可能会请求你帮忙,
领导可能会让你处理一些突发事件。

这些杂七杂八的事情有些你是可以不用管的,直接无视
有些事情你觉得应该得处理一下
还有一些呢,你必须要处理,比如领导发话了。

在这里,你的工作就是当前正在运行的程序
你必须面对各种突如其来的事情,这些事情就好比是信号
在一个公司里,一般会有各种潜规则,说明了那些事你该做,那些事你不该做
这就好比是系统对信号的默认处理规则

但是呢,你有你自己的处事风格。。
好了,这些事情用信号通知到你了,你该怎么处理?
你可以无视,当然更多的情况是,停下手中的工作,来处理这个突发事件
这个处理突发事件的过程就是你的信号处理函数
处理完成之后再回到你的正常工作上来。

当然信号不一定是别人(系统内核)给你的
你自己也可以给自己发信号
好比你自己突然想起一件事情必须要去处理一样。

信号的实质是这么三点:
1、信号是应用程序知晓外部事件的一种方式;
2、应用程序可以忽略,可以处理,或者无条件接受信号;
3、应用程序也可以是信号的发送者。

理解浅薄,希望共同讨论,共同进步。

论坛徽章:
0
10 [报告]
发表于 2010-09-05 20:24 |只看该作者
谢谢你们。我想我会走出困境,突出重围的。加油,insnowind (绝望煮夫)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP