c - 将带有参数的函数传递给信号处理程序?

标签 c posix

我可以成功地将函数传递给 signal(),但我无法想出一种在不使用 static 或全局变量的情况下将参数传递给函数的方法。 functionontimer 只是更新一个数组。

if (signal(SIGALRM, (void (*)(int)) functionontimer) == SIG_ERR) 
{
return(-1);
}

有没有办法在不使用static或全局变量的情况下将指针与函数一起传递?理想情况下,我会看到 functiontimer 的定义类似于 functiontimer(int *data, index)。

最佳答案

Is there anyway to pass a pointer along with the function without using static or a global variable? I would ideally see functiontimer be defined something like functiontimer(int *data, index)

不,没有,如果您强制输入需要附加参数的函数(例如通过将其转换为示例中所示的方式),那么当系统使用参数的数量和类型调用它时,会出现未定义的行为它希望使用函数实际定义接收的参数数量和类型来代替。

尚不清楚您想要建议的行为的目的是什么,但信号处理很可能无法达到该目的。它肯定不会按照您希望的方式达到目的。

关于c - 将带有参数的函数传递给信号处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917679/

相关文章:

c - Linux C 套接字 - 绑定(bind)套接字从另一个接口(interface)接收数据包?

c - `getchar()` 返回错误的具体情况是什么?

c - 在 C 中处理 POSIX - 错误消息 : Segmentation Fault (core dumped)

shell - 使用 cat 从标准输入读取数据并将其写入文件不是对 cat 的无用使用吗?

c - 需要澄清有关 vfork 使用的信息

c++ - 使用新的 C 和 C++ 标准的 POSIX 多线程会发生什么?

c++ - 为什么 c 中的幂函数对于大数来说花费的时间比预期的要长

c - 什么时候使用 short 而不是 int?

c - 尝试打印最佳数组 : "Name lookup of ' k' changed for new ISO 'for"

c - c 中的区域程序出现问题