【发布时间】:2017-12-27 09:18:37
【问题描述】:
我通过使用 timer_create 编写了一篇文章,用于设置计时器以调用我将 sigev_notify 设置为 SIGEV_THREAD 的线程,它给了我错误 EINVAL(Invalid argument) 但是当我将 sigev_notify 设置为 SIGEV_SIGNAL 代码工作正常。
即使在 solaris 11 中,我的这段代码也可以在所有操作系统中运行,但对于 solaris 10,我会出错。
代码如下:
{
int status =0;
struct itimerspec ts;
struct sigevent se;
se.sigev_notify = SIGEV_THREAD;
se.sigev_value.sival_int = val;
se.sigev_notify_function = func;
se.sigev_notify_attributes = NULL;
status = timer_create(CLOCK_REALTIME, &se, timer_id);
ts.it_value.tv_sec = abs(delay);
ts.it_value.tv_nsec = (delay-abs(delay)) * 1e09;
ts.it_interval.tv_sec = abs(interval);
ts.it_interval.tv_nsec = (interval-abs(interval)) * 1e09;
status = timer_settime(*timer_id, 0, &ts, 0);
}
请帮我解决这个问题。
提前谢谢...
【问题讨论】:
-
哪里出错了?
-
timer_id 是我这样定义的变量 (timer_t *timer_id)
-
在你通过之前它指向哪里?
-
相关:stackoverflow.com/q/47941299/694576 如果不是重复到。
标签: c++ c timer signals solaris-10