gpt4 book ai didi

需要 C 信号代码解释

转载 作者:行者123 更新时间:2023-12-02 09:15:31 26 4
gpt4 key购买 nike

我们在教科书中看到了这段缺乏解释的代码除了它处理信号这一事实。

#include <signal.h> 
void (*signal(int signr,
void(*sighandler)(int)
)
)(int)

我知道sighandler是一个指向函数的指针,但我不明白它是真正执行了还是只是返回了?

(int) 的调用是做什么的?它看起来几乎像一个反转的 Actor 。

最佳答案

这是signal 函数的签名。

第一个参数 signrint 类型,是您要更改其处理程序的信号。

第二个参数 sighandler 是类型为 void (*)(int) 的函数指针,即接受 int 和返回 void。此参数是将处理信号的函数的名称。

该函数返回一个类型为 void (*)(int) 的函数指针(与参数 2 的类型相同),它指向前一个信号处理函数。

分解:

 signal                                 // signal
signal() // is a function
signal(int) // taking a int
signal(int, void (*)(int)) // and a function pointer
// which takes an int and return void
(*signal)(int, void (*)(int))(int) // and returns a function pointer
// which takes an int
void (*signal)(int, void (*)(int))(int) // and returns void

手册页包含一个 typedef,它使这一点更加清晰:

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

关于需要 C 信号代码解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47537853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com