2016-10-12 2 views
0

exec 시스템 호출 이후에 내 코드에서 goto 문을 사용하려고합니다. exec을 사용한 후 프로그램에서 종료됩니다. 내 코드에서 어떻게 유지할 수 있습니까?exec 시스템 호출을 사용하면 다른 프로그램을 실행하지만 현재 proram을 종료합니다

다음은 코드입니다.

#include<stdio.h> 
#include<stdlib.h> 
#include<unistd.h> 
#include<string.h> 

#define MAX_LINE 80 
#define MAX 3 

void main() 
{ 
    char *args[MAX_LINE]; 
    char arg1[MAX_LINE/2]="\0"; 
    char arg2[MAX_LINE/2]="\0"; 

UBOS: 
    printf("ubos>"); 
    fflush(stdout); 
    fgets(arg1, sizeof(arg1), stdin); 
    arg1[strlen(arg1)-1]='\0'; 
    fgets(arg2, sizeof(arg2), stdin); 
    arg2[strlen(arg2)-1]='\0'; 
    printf("You typed: %s %s\n",arg1,arg2); 
    fflush(stdin); 
    if (strlen(arg2) == '\0') 
    { 
     args[0] = arg1; 
     args[1] = '\0'; 
    } 
    else 
    { 
     args[0] = arg1; 
      args[1] = arg2; 
      args[2] = 0; 
    } 
    int i; 
    for(i=0;i<MAX && args[i];i++) 
    { 
      printf("Vlue of args[%d] =%s\n",i, args[i]); 
    } 

    execvp(args[0],args); 
    goto UBOS; 


    printf("Something is not correct...\n"); 
    exit(0); 
} 

내가이 코드 작업을 수행 할 수있는 방법이 있습니까?

+1

을; [이 이전 질문] (http://stackoverflow.com/questions/4204915/please-explain-exec-function-and-its-family) (특히 fork와 함께 사용하는 것에 대한 토론). –

+0

그래, 그게 임원이야. 설명서를 읽었습니까? – immibis

+0

존재하지 않는 프로그램 이름을 지정하여'exec'가 실패하면 코드가 반복됩니다. –

답변

1

exec family를 사용하여 프로그램을 실행하면 지정된 프로그램 파일이 실행되면 호출자의 주소 공간에있는 원래 프로그램이 사라지고 새 프로그램으로 바뀝니다. 따라서 "반환"이 없습니다. 에러 조건의 경우, 호출 프로그램은 errno가 설정된 상태에서 음수 리턴을 얻습니다. 당신은 포크와 자식 프로세스를 가질 수

은 무엇을`exec` (및 그 변종) 년대 execvp 부모 호출 goto