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

时间:2018-12-24 21:05:00

标签: c posix

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

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

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

1 个答案:

答案 0 :(得分:2)

  

总有没有使用static或全局变量的情况下将指针与函数一起传递吗?理想情况下,我希望将functiontimer定义为类似functiontimer(int *data, index)

不,没有,如果您强制执行一个需要附加参数的函数(例如,如示例中所示强制转换),则当系统使用参数的数量和类型调用该函数时,会发生未定义的行为它希望使用该函数实际定义为接收的参数的数量和类型,而不是

目前尚不清楚您希望该行为的目的是什么,但是很可能信号处理不能达到该目的。当然,它并不能达到您希望的目的。

相关问题