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/

  • 相关阅读:
    TopShelf注册win10 服务
    win 10服务简单注册
    关于Win10 的服务注册
    泛型 Generic
    数据转换成字符串格式
    蛋白粉怎么吃
    6 ways to Sort Pandas Dataframe: Pandas Tutorial
    GET and POST requests using Python
    python中安装包出现Retrying, 国内pip源提示“not a trusted or secure host”解决
    Anaconda 4.7.5
  • 原文地址:https://www.cnblogs.com/guoyuqiangf8/p/2336269.html
Copyright © 2011-2022 走看看