zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    知识积累
    来西安对吗
    python循环语句---------while、for
    postman接口功能测试
    Laravel环境搭建
    Vue
    搭建Vue.js环境
    Atom
    PHP
    thinkphp-无限分类下根据任意部门获取顶级部门ID
  • 原文地址:https://www.cnblogs.com/guoyuqiangf8/p/2336269.html
Copyright © 2011-2022 走看看