[英]Linux - signal: error: invalid use of non-static member function
我最初编写了一些测试来测试我的程序的信号功能。 测试证明很有希望,但是在我的源代码中将小的代码更改移动到我的 class 给我带来了一些问题。
我添加了两个函数: setAlarm()
和回调alarm_handler
。 setAlarm()
它说的做,就是设置闹钟。 一旦时间到期,将调用警报处理程序,该处理程序运行执行 function。
a.cpp
int Database::alarm_handler(int signum)
{
dbExecSql();
}
void Database::setAlarm()
{
signal(SIGALRM, alarm_handler);
ualarm(500000,0);
}
bh
class Database
{
public:
int alarm_handler(int signum);
void setAlarm();
dbExecSql();
};
错误
error: invalid use of non-static member function
signal(SIGALRM, alarm_handler);
任何帮助,将不胜感激。
编辑
我已经修改了要从 class 中删除的 alarm_handler,但是我现在收到:
error: invalid conversion from ‘int (*)(int)’ to ‘__sighandler_t {aka void (*)(int)}’ [-fpermissive]
signal(SIGALRM, alarm_handler);
^
The signal handler function ( alarm_handler
) can't be member function and should be a standalone function with C linkage.
从 class 中删除它:
void alarm_handler(int signum)
{
dbExecSql();
}
请注意,只能从信号处理程序安全地调用异步信号安全函数。 因此,您需要确保dbExecSql()
尊重这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.