Как запустить бесконечный цикл в реальном времени - Linux?
Я написал программу hello world с бесконечным циклом с API-интерфейсом Xenomai следующим образом: это скоро завершится.
Я на самом деле хотел проверить задержку этой программы в реальном времени через 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);
}
2 ответа
В нижней части основного, также положить бесконечный цикл. в то время как (1) сон (10000) обычно хорош для полноценного Linux, не знаю о RT-мире.
Происходит то, что вы порождаете новое задание, а затем main немедленно возвращается после этого, что завершает весь процесс.
Согласен:
Происходит то, что вы порождаете новое задание, а затем main немедленно возвращается после этого, что завершает весь процесс.
Но, IMO, вы должны использовать rt_task_join()
в конце основного к
Дождитесь окончания задачи в реальном времени. [1]
[1] https://xenomai.org/documentation/trunk/html/api/group__task.html