将带有参数的函数传递给信号处理程序?
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)
不,没有,如果您强行引入一个需要额外参数的函数,例如按照您在示例中显示的那样对其进行强制转换,那么当系统使用数字和类型调用它时,会发生未定义的行为它期望使用的参数的数量和类型,而不是函数实际定义为接收的参数的数量和类型。
不清楚您希望提议的行为出于什么目的,但信号处理很可能不符合该目的。它肯定没有达到您希望的目的。
我可以成功地将函数传递给 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 likefunctiontimer(int *data, index)
不,没有,如果您强行引入一个需要额外参数的函数,例如按照您在示例中显示的那样对其进行强制转换,那么当系统使用数字和类型调用它时,会发生未定义的行为它期望使用的参数的数量和类型,而不是函数实际定义为接收的参数的数量和类型。
不清楚您希望提议的行为出于什么目的,但信号处理很可能不符合该目的。它肯定没有达到您希望的目的。