我用Xenomai API编写了一个带有无限循环的hello world程序,如下所示: 这很快就会终止。
我实际上想通过latencytop
来测试这个程序的实时延迟
如何实时运行无限循环?
RT_TASK demo_task;
void demo(void *arg)
{
RT_TASK *curtask;
RT_TASK_INFO curtaskinfo;
curtask=rt_task_self();
rt_task_inquire(curtask,&curtaskinfo);
printf("Task name : %s \n", curtaskinfo.name);
//------------------ hello world --------------------
while (1)
{
printf("Hello World!\n");
}
}
int main(int argc, char* argv[])
{
char str[10];
rt_print_auto_init(1);
mlockall(MCL_CURRENT|MCL_FUTURE);
printf("start task\n");
sprintf(str,"hello");
rt_task_create(&demo_task, str, 0, 50, 0);
rt_task_start(&demo_task, &demo, 0);
}
答案 0 :(得分:4)
在主要的底部,也放了一个无限循环。虽然(1)睡眠(10000)通常对完整的linux有好处,不了解RT世界。
正在发生的事情是你正在产生一个新任务,然后主要在此之后立即返回,这将退出整个过程。
答案 1 :(得分:0)
我同意:
发生的事情是你正在产生一个新任务,然后主要在此之后立即返回,这将退出整个过程。
但是,IMO,你应该在main的末尾使用rt_task_join()
等待终止实时任务。 [1]
[1] https://xenomai.org/documentation/trunk/html/api/group__task.html