• LINUX中signal函数的理解


    LINUX中信号函数定义的比较复杂,原来总结的,现在修改一下贴出来。

    void (*signal (int signo, void (*func)(int))) (int);

    可 以改写成void (*XXXX) (int);XXXX为一个函数指针,那么这个函数指针是从哪儿来的呢。他是通过*signal (int signo, void (*func)(int))这个函数返回的,在C语言中void *func()返回一个void指针,{注意:void(*func)()由于括号优先级高,所以FUNC是指向的一个函数的指针,而且认为这里的这个*应该不是原先理解的意思,应该只是指明这是外面函数的一个函数指针,而返回的才是一个真正的函数指针2008-7-25} ,而这个返回的函数指针从哪里来得到呢。从函数来看,只能从void (*func)(int)来得到。这样,就好理解了,*signal (int signo, void (*func)(int))这个函数返回了一个指向void (*func)(int)函数的指针,即func的指针。下面我们再理解用typedef void (*sighandler_t)(int)定义就好理解了。

    可以将其改写成:

    typedef void (*sighandler_t)(int);

    sighandler_t signal(int signum, sighandler_t handler);

    注意这个蓝色部分:由于void (*signal (int signo, void (*func)(int))) (int)中最后的(int)已经由sighandler_t handler中的handler默认带有。

     

    版权所有:http://fpcfjf.blog.163.com/blog/static/554697932011116113736142/

  • 相关阅读:
    正则表达式--断言
    ie6兼容性处理
    git log 高级用法
    html-文件上传设置accept类型延时问题
    sublime text3 -- JavaScript Completions
    Git进行fork后如何与原仓库同步
    Redis的数据结构及应用场景
    PHP手册-函数参考-日期与时间相关扩展
    什么是缓存
    MySQL的连接方式、事务、性能优化
  • 原文地址:https://www.cnblogs.com/guoyuqiangf8/p/2336269.html
Copyright © 2020-2023  润新知