信号处理程序问题

2023-12-29

我们一直在讨论 C/Unix 中的信号,教授在课堂上举了一个让我困惑的例子。在下面的 main 方法中,使用包含的参数调用信号函数。

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

handler 是一个定义为的函数static void handler(int param){

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

EDIT

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


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

每个信号处理程序must具有相同的签名。信号处理程序将采用单个 int 参数并且没有返回值,这是硬编码到内核中的。你不告诉内核——通过signal()-- 如何调用处理程序,因为在这件事上你别无选择。当内核决定调用信号处理程序时,它已经知道要发送什么信号。所以它查找处理程序的地址,然后调用该函数,如下所示

(*pointer_to_handler) (signal_number);

正如保罗的回答所说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信号处理程序问题 的相关文章

  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 在reactjs中切换下拉菜单

    我的导航栏上有一个简单的下拉菜单的以下代码 https jsfiddle net jL3yyk98 10 https jsfiddle net jL3yyk98 10 索引 html div div 导航菜单 js var NavMenu
  • Polymer:在纸张按钮按“确定”后获取纸张对话框内的纸张输入值

    我需要在按下 确定 纸张按钮后获取纸张对话框内某些纸张输入字段的值 I have
  • 检查时间是否在某一分钟内的最佳方法是什么?

    我想编写一个简单的 python 脚本 它将检查是否是给定小时 分钟之前的 2 分钟 然后每天或在给定时间的给定日期调用我的函数 该脚本将在 cronjob 中每分钟运行一次 所以执行myfunction 的两种情况 每天 10 55201
  • 如何更改 Tkinter 按钮周围框的颜色?

    我尝试了在 Stackoverflow 上找到的一些东西 例如在按钮周围放置一个框架并为其指定颜色 就像所说的那样here https stackoverflow com questions 53101307 how do i change
  • 两个不常见的PHP运算符一起使用来获取图像像素颜色,请解释

    The PHP 图像颜色 http www php net manual en function imagecolorat php函数可用于获取图像像素的 RGB 值 如文档中所示 im imagecreatefrompng php png
  • 在连接中广播左表

    这是我的加入 df df small join df big id leftanti 它似乎我只能广播正确的数据帧 https stackoverflow com questions 62735494 broadcast join in s
  • 如何使用 Zebra P4t 打印机打印带有尖音符(如“é”)的法语字符

    我的问题是关于用尖音符打印法语字符 例如 etc with a 斑马 P4t 打印机 考虑下面的 ZPL 指令 XA FO20 20 CI28 A0 20 20 FD Amiti FS XZ 我已将这些指令放入编码为 UTF 8 的文件中
  • 使用 Enum.Parse() 时出现意外结果

    class Program static void Main string args String value Two Type enumType typeof Numbers Numbers number Numbers Enum Par
  • Apache Spark 消息理解

    请求帮助来理解此消息 INFO spark MapOutputTrackerMaster Size of output statuses for shuffle 2 is 2202921 bytes 2202921在这里是什么意思 我的工作
  • 声明通用变量类型

    我正在尝试在 C 中声明通用变量类型 我不能使用 C 并且我想到了以下选项 Option1 typedef struct void value ElementType e type Data t Option 2 typedef struc
  • 解析 C 中的命令行参数

    我正在尝试编写一个程序 可以在 C 中逐行 逐字或逐字符地比较两个文件 它必须能够读取命令行选项 l w i or 如果选项是 l 它逐行比较文件 如果选项是 w 它逐字比较文件 如果选项是 它会自动假定下一个参数是第一个文件名 如果选项是
  • 使用 Node.js API 的 Keycloak 通过 Docker 失败

    我有一个与 Keycloak 集成的 Node js Rest API 当我在没有 Docker 的情况下在本地运行 API 时 一切正常 但每当我通过 docker 镜像运行 API 时 都会收到错误 403 禁止 我已经确保我的容器可以
  • 如何用Java获取cookies?

    如何使用 Java 从网页获取 cookie 我的意思是只有Java而不是Servlet等 您可以使用java net URLConnection http download oracle com javase 6 docs api jav
  • 模态对话框或 div 覆盖框架集?

    我有一个 html 页面 其中有几个框架 也是嵌套框架集 我想在所有这些框架上显示叠加层以显示模式框 灯箱 那可能吗 我知道我知道框架集不好用 但是我想尝试一下 模式对话框示例 http flowplayer org tools demos
  • 使用 javascript 分割字符串

    我有一个像 a b c e 这样的字符串 注意前面多了一个分号e 我想要将字符串拆分成a b c e 但它会像这样分裂a b c e 我的代码是 var new arr str split 我在这里可以做什么才能得到我想要的结果 Regar
  • 通过 Google Cloud Storage 和负载均衡器提供 React 应用程序服务,将任何 url 映射到索引?

    我正在使用 Google Cloud Storage 和 Loadbalancer 设置 React 应用程序前端 在构建过程中 index html 和 javascript 文件被上传到云存储中 负载均衡器指向后端存储桶 如果我转到 h
  • 理解 NumPy 的卷积

    计算简单移动平均线时 numpy convolve似乎可以完成这项工作 问题 使用时是如何计算的np convolve values weights valid 当文档提到convolution product is only given
  • 如何在Python中抑制控制台输出?

    我正在使用 Pygame SDL 的操纵杆模块从游戏手柄获取输入 每次我打电话给它get hat 方法将其打印到控制台 这是有问题的 因为我使用控制台来帮助我调试 现在它被淹没了SDL JoystickGetHat value 0 每秒60
  • 在 Glassfish v3 中,Servlet 请求无明显原因地按顺序执行

    我正在使用 Glassfish 3 Web 配置文件 无法让 http 工作线程在 servlet 上同时执行请求 这就是我观察问题的方式 我制作了一个非常简单的 servlet 它将当前线程名称写入标准输出并休眠 10 秒 protect
  • 信号处理程序问题

    我们一直在讨论 C Unix 中的信号 教授在课堂上举了一个让我困惑的例子 在下面的 main 方法中 使用包含的参数调用信号函数 main signal SIGALRM handler install handler handler 是一