我有这个问题: 我使用itimerspec结构创建了一个结构。 itimerspec结构有两个字段:
struct timespec {
time_t tv_sec; /* Seconds */
long tv_nsec; /* Nanoseconds */
};
struct itimerspec {
struct timespec it_interval; /* Timer interval */
struct timespec it_value; /* Initial expiration */
};
所以当我进入时:
enter code here
struct itimerspec its; // argument to timer_gettime
/* Setting timer interval */
its.it_interval.tv_sec=0;
its.it_interval.tv_nsec=1;
/* Setting timer expiration */
its.it_value.tv_sec=0.1; // First expiry after 1 sec
its.it_value.tv_nsec=0;
On compilation:
prototype1.cc:115: warning: converting to ‘__time_t’ from ‘double’
我的问题是:根据设计,用户可以输入整数的计时器到期(1,2,3等等,这很好),但也可以输入时间,如0.1秒,o.2秒等。但仅限在几秒钟内。
答案 0 :(得分:1)
您无法为长值分配双精度数。如果您需要的时间少于1秒,则应根据使用情况表达。
0.1秒= 100000 usec
做:
its.it_value.tv_sec=0; // First expiry after 1 sec
its.it_value.tv_nsec= 0.1 * (usec in sec);
答案 1 :(得分:1)
你必须调整到secs和nanosecs,例如0.1秒= 0秒和100,000毫秒。