免费注册 查看新帖 |

Chinaunix

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

学习信号的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-14 17:03 |只看该作者 |倒序浏览
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void sig_alrm (int singo);

int main(int argc, char *argv[])
{
    pid_t pid;
    unsigned int unslept;

    signal(SIGALRM, sig_alrm);
    if( (pid = fork()) <0)
        perror("fork error!\n");
    else if(pid == 0)
    {
        sleep(3);
        kill(getppid(), SIGALRM);
        printf("child exit!\n");
        exit(0);
    }
    else
    {
        unslept = sleep(10);
        printf("parent awakened!\n");
        printf("unslept time = %u\n", unslept);
    }
    return 0;
}

void sig_alrm (int singo)
{
    signal(SIGALRM, SIG_DFL);
    return ;
}       /* -----  end of function sig_alrm  ----- */

运行的结果是:
child exit!
parent awakened!
unslept time = 7

为什么父进程接受到了SIGALRM不立即终止呢?SIGALRM默认操作不是终止吗?

谢谢!

[ 本帖最后由 samuel1004 于 2007-4-14 18:26 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-04-14 17:55 |只看该作者
记得 awaken 的过去分词为 awakened
另外 awake 是形容词

论坛徽章:
0
3 [报告]
发表于 2007-04-14 18:21 |只看该作者

回复 2楼 langue 的帖子

这个不是主要问题了,帮我看看主要的阿

[ 本帖最后由 samuel1004 于 2007-4-14 18:25 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-04-14 18:26 |只看该作者

回复 4楼 langue 的帖子

知道了

论坛徽章:
0
5 [报告]
发表于 2007-04-14 18:26 |只看该作者
哦,awake 和 awaken 都能做动词,不过前者主要用于动作主体的状态保持或改变,而后者主要用于动作受体的状态改变。

论坛徽章:
0
6 [报告]
发表于 2007-04-14 18:33 |只看该作者

回复 5楼 langue 的帖子

改过来了,帮忙看看那个信号的问题呀 谢谢了。

论坛徽章:
0
7 [报告]
发表于 2007-04-14 18:36 |只看该作者
你已经用 signal() 改变了进程接收到 SIGALRM 的行为。

论坛徽章:
0
8 [报告]
发表于 2007-04-14 18:50 |只看该作者

回复 7楼 langue 的帖子

我把main中的signal(SIGALRM, sig_alrm);改成signal(SIGALRM, SIG_DFL);之后,结果就是接受到信号就退出了,这两个的区别是什么呢?谢谢。

论坛徽章:
0
9 [报告]
发表于 2007-04-14 18:54 |只看该作者
请回答
signal() 函数的用途:_________。

论坛徽章:
0
10 [报告]
发表于 2007-04-14 19:06 |只看该作者
我的理解是signal()就是告诉进程接受到这个信号的处理办法。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP