【发布时间】:2020-04-27 10:19:25
【问题描述】:
我最初为我的程序编写了一些测试来测试信号的功能。测试证明是有希望的,但是在我的源代码中将小的代码更改移动到我的类给我带来了一些问题。
我添加了两个函数:setAlarm(),以及一个回调函数alarm_handler。 setAlarm() 照它说的做,设置了警报。一旦时间到期,就会调用警报处理程序,该处理程序会运行一个执行函数。
a.cpp
int Database::alarm_handler(int signum)
{
dbExecSql();
}
void Database::setAlarm()
{
signal(SIGALRM, alarm_handler);
ualarm(500000,0);
}
b.h
class Database
{
public:
int alarm_handler(int signum);
void setAlarm();
dbExecSql();
};
错误
error: invalid use of non-static member function
signal(SIGALRM, alarm_handler);
任何帮助将不胜感激。
编辑
我已修改 alarm_handler 以从我的班级中删除,但现在我收到了:
error: invalid conversion from ‘int (*)(int)’ to ‘__sighandler_t {aka void (*)(int)}’ [-fpermissive]
signal(SIGALRM, alarm_handler);
^
【问题讨论】:
标签: c++ linux asynchronous signals