【问题标题】:Signal handling in Linux (CentOS) CLinux (CentOS) C 中的信号处理
【发布时间】:2014-04-29 09:41:02
【问题描述】:

我对操作系统相当陌生,最熟悉 C++,但我正在努力填补我的知识空白并习惯 C 语法。

我不断遇到一些我不知道如何解释的语法,它的形式如下:

void (*sa_sigaction) (int sig, siginfo_t *si, void *ctx)

有 3 件事让我感到困惑:

  1. sa_sigaction 是指针吗?我假设它是函数名。也可以是指针吗?

  2. 为什么 sa_sigaction 在括号中?这有任何语法相关性吗?

  3. 'void ctx' 是 void 指针吗? (这对我来说是这样的,但我不明白为什么 void 指针会是一个参数)。

我真的希望我不是在问一个愚蠢的问题 - 如果我是,请为我指出一些阅读材料的正确方向,我不知道我需要开始阅读 C 语言中的哪个主题。

非常感谢我对 synatx 的 3 种解释是否正确的回答:)

非常感谢,编码愉快

【问题讨论】:

标签: c linux operating-system signals


【解决方案1】:

1) 是的,它既是指针又是函数。

2) 是的,这就是声明函数指针的语法。

3) 是的,这是一个空指针。它们对于传递没有类型的内存地址非常有用。

就像@user2485710 建议的那样,请查看函数指针上的this tutorial

【讨论】:

  • 现在一切看起来都那么简单!谢谢!
  • @user3438496 我喜欢函数指针,尤其是当我必须决定要调用哪个函数时,但它们都具有完全相同的参数。我可以创建一个指针数组,然后使用正确的索引元素调用该数组来调用正确的函数。例如,如果您要制作一个计算器……您可以将两个整数传递给 add、sub、mult 和 div,这样您就可以制作一个小的函数数组并使用运算符来决定调用哪个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
相关资源
最近更新 更多