C Linux中的setitimer功能
我在使用C Linux中的setitimer功能,c,linux,C,Linux,我在使用setitimer功能时遇到了一些问题 当我执行代码时,我看不到预期的结果。当我在主函数(这是我繁忙执行的代码)中注释而(1)部分时,信号句柄printf()工作。根据我的理解(main()和signal\u handler())都应该以时间切片的方式运行,或者根据Linux调度程序并行运行 有人能帮我调试或纠正我的理解吗 代码如下: void timer_handler (int signum) { printf("...\n"); printf ("Timer e
setitimer
功能时遇到了一些问题
当我执行代码时,我看不到预期的结果。当我在主函数(这是我繁忙执行的代码)中注释而(1)
部分时,信号句柄printf()
工作。根据我的理解(main()
和signal\u handler()
)都应该以时间切片的方式运行,或者根据Linux调度程序并行运行
有人能帮我调试或纠正我的理解吗
代码如下:
void timer_handler (int signum) {
printf("...\n");
printf ("Timer expired %d times\n", ++count);
}
void Tmr_Init(void) {
struct sigaction sa;
struct itimerval timer;
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &timer_handler;
sigaction (SIGPROF, &sa, NULL);timer.it_value.tv_sec = 2;
timer.it_value.tv_usec = 0;
timer.it_interval.tv_sec = 1;
timer.it_interval.tv_usec = 0;
setitimer (ITIMER_PROF, &timer, NULL);
}
int main () {
Tmr_Init();
/* Do busy work. */
while (1) {
printf("In main!!\n");
sleep(2);
}
return 0;
}
您需要提供代码。另外,void timer_handler(int signum){printf(“timer expired%d times\n”,++count);}int main(){Tmr_Init();/*做繁忙的工作。*/while(1){printf(“In main!!\n”);sleep(2);}返回0;}如果您看到上面的代码,如果我对main()函数中的while(1)代码部分进行注释,则信号处理程序的功能非常完美。您的问题需要添加更多代码。不,我的意思是您需要通过编辑将代码放入问题本身。不要在评论中发布它们。