c - 将带参数的函数传递给信号处理程序?
问题描述
我可以成功地将函数传递给 signal(),但我无法想出一种方法来将参数传递给函数而不使用static
或全局变量。 functionontimer
只是更新一个数组。
if (signal(SIGALRM, (void (*)(int)) functionontimer) == SIG_ERR)
{
return(-1);
}
static
有没有办法在不使用或全局变量的情况下将指针与函数一起传递?理想情况下,我会看到 functiontimer 被定义为functiontimer(int *data, index)
.
解决方案
static
无论如何都可以在不使用或全局变量的情况下将指针与函数一起传递?理想情况下,我会看到 functiontimer 被定义为functiontimer(int *data, index)
不,没有,并且如果您强制输入一个需要额外参数的函数,例如通过如您在示例中显示的那样强制转换它,那么当系统使用它期望的参数的数量和类型调用它时,会出现未定义的行为使用而不是函数实际定义要接收的参数的数量和类型。
目前尚不清楚您想要提议的行为的目的是什么,但很可能是信号处理不符合该目的。它当然不会以您希望的方式达到目的。
推荐阅读
- r - R - 用重复的数字序列替换数据框中的数字列表
- reactjs - 运行k6时引用错误:regeneratorRuntime is not defined
- typescript - 索引可选属性的打字稿索引签名
- laravel - 网站迁移后代码不适用于旧用户
- android - Android Studio 中缺少 Gradle 图标的同步项目
- matlab - 使用matlab的fminsearch求最小值
- numpy - 2D Numpy 数组布尔切片
- c# - 无法在 Windows Server 上正确运行 .exe
- google-apps-script - Google App Script - 如果另一列中的条件匹配,则将数字条目设为 0
- sql - 在多个条件下返回左外连接中的最后一行