2012-03-21 8 views
0

다음과 같이 Xenomai API를 사용하여 무한 루프가있는 hello world 프로그램을 작성했습니다. 곧 종료됩니다.무한 루프를 실시간으로 실행하는 방법 - Linux?

실제로이 프로그램의 실시간 대기 시간을 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); 
} 

답변

4

맨 아래에는 무한 루프가 있습니다. (1) 수면 (10000)은 일반적으로 RT - 세계에 대해 잘 모르지만, 본격적인 리눅스에서 좋은 것입니다.

새로운 작업을 시작한 후 주 프로세스가 종료되는 즉시 메인 프로세스가 종료됩니다.

0

나는 동의

무엇 일어나는 것은 새 작업을 산란하고 다음 주 즉시 전체 프로세스를 종료하는,이 이후에 반환하는 것입니다.

는하지만, IMO, 당신은 실시간 작업의 종료에

기다릴 주 말에 rt_task_join()를 사용해야합니다. [1]

[1] https://xenomai.org/documentation/trunk/html/api/group__task.html

관련 문제