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

Passing function with arguments to a signal handler?

我可以成功地将函数传递给 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)

不,没有,如果您强行引入一个需要额外参数的函数,例如按照您在示例中显示的那样对其进行强制转换,那么当系统使用数字和类型调用它时,会发生未定义的行为它期望使用的参数的数量和类型,而不是函数实际定义为接收的参数的数量和类型。

不清楚您希望提议的行为出于什么目的,但信号处理很可能不符合该目的。它肯定没有达到您希望的目的。