void DispMainMenu(char Selected)
{
printf("n");
printf("MAIN MENUn");
printf("------------------------n");
printf("1.MENU 1n");
printf("2.MENU 2n");
printf("3.MENU 3n");
switch (Selected) {
case 1 :
printf("> MENU 1n");
execl("play_audio", "./play_audio", "-c", "pcm16_2", "-lsbfirst", "1.wav", NULL);
break;
case 2 :
printf("> MENU 2n");
execl("play_audio", "./play_audio", "-c", "pcm16_2", "-lsbfirst", "2.wav", NULL);
break;
case 3 :
printf("> MENU 3n");
execl("play_audio", "./play_audio", "-c", "pcm16_2", "-lsbfirst", "3.wav", NULL);
break;
}//switch
}//DispMainMenu()
void main(void)
{
char c, SelectedMenu;
SelectedMenu = 1;
do {
DispMainMenu(SelectedMenu);
c = getc();
switch (c) {
case 'U' :
SelectedMenu--;
if (SelectedMenu < 1) SelectedMenu = 3;
break;
case 'D' :
SelectedMenu++;
if (SelectedMenu > 3) SelectedMenu = 1;
break;
case 'X' :
//PlaySub(SelectedMenu);
break;
case 'M' :
c = 0;
break;
default:
break;
}//switch
if (c == 0) break;
} while(1);
}//main()
커널은 2.4.xx 입니다.
이정도 정보로 답을 알수 있을지 모르겠네요.
질문의 요지는 아래의 execl함수 실행 후
메인프로그램내에 있어야 하는 데 메인 프로그램까지 끝나는 점입니다.
execl("play_audio", "./play_audio", "-c", "pcm16_2", "-lsbfirst", "1.wav", NULL);
- play_audio : audio를 재생하는 외부 프로그램
- 1.wav : audio data file
원래의 실행파일을 남겨놓고 싶을 겨우 exec계열의 함수는 fork()를 한 후에 실행시켜야 할겁니다.
이유는 설명이 길어지니 생략...^^