gpt4 book ai didi

c - 信号处理问题

转载 作者:可可西里 更新时间:2023-11-01 11:44:38 25 4
gpt4 key购买 nike

我们一直在讲 C/Unix 中的信号,教授在类里面举了一个让我感到困惑的例子。在下面的主要方法中,使用包含的参数调用信号函数。

main()
{
signal(SIGALRM, handler); // install handler

handler 是定义为 static void handler(int param){

的函数

根据 Ubuntu man 7 signal,SIGALRM 是一个整数值 14,handler 是程序员定义的函数。然而,整数参数并没有在信号调用中显式定义,那么处理程序如何接收参数呢?

编辑

感谢您的帮助。真正让我感到困惑的问题是该类没有涵盖 typedef,所以我不知道它是如何合并到函数中的,而这正是缺少的部分。

最佳答案

我不确定之前的评论是否回答了您的问题。我猜您是在问如何参数到达信号处理程序。如果是这样:

每个信号处理程序必须具有相同的签名。它被硬编码到内核中,信号处理程序将采用单个 int 参数并且没有返回值。您无需通过 signal() 告诉内核如何调用处理程序,因为您别无选择。当内核决定调用您的信号处理程序时,它已经知道它要发送什么信号。所以它查找处理程序的地址,然后像调用该函数一样

(*pointer_to_handler) (signal_number);

正如保罗的回答所说。

关于c - 信号处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473645/

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