유 닉 스 학습 노트 --- 해석 기 파일 (interpreter file)

세풍 이 오래 되 지 않 은 것 을 감안 하여 주 제 를 이야기 하기 전에 먼저 장면 을 가설 했다. 샤 오 밍 은 길가 에서 한 푼 을 주 웠 는데 어떻게 해 야 할 지 몰라 114 에 전 화 를 걸 었 고 114 는 경찰서 에 전 화 를 걸 어 샤 오 밍 의 상황 을 경찰 아저씨 에 게 알 리 고 경찰 아저씨 가 처리 했다.
       본론 으로 들 어가 면 해석 기 파일 은 114 이 고 경찰서 경찰 아저씨 가 지정 한 해석 기 입 니 다.이렇게 하 는 장점 은 바로 해석 기 파일 에 해석 기 를 지정 하여 해당 하 는 장면 상황 에 대해 해당 하 는 처 리 를 할 수 있다 는 것 이다. 예 를 들 어 내 가 114 라면 나 는 샤 오 밍 의 돈 을 직접 비밀 로 할 수 있다.(이 추구...)
      시스템 에서 빈 디 렉 터 리 에 설 정 된 해석 기 를 제외 하고 스스로 해석 기 를 작성 할 수 있 습 니 다. 사실은 프로그램 입 니 다.구체 적 인 실례 와 절 차 는 다음 과 같다.
     이 예 는 모든 프로그램 이 사용자 정의 작업 디 렉 터 리/home/wwe/code/interpreter 에서 완 료 됩 니 다.
     1. 자신의 해석 기 작성:
     1.1  파일 이름 은 echoarg. c 입 니 다.  
    #include <stdio.h>

    //function: print out all the args

    int 
    main(int argc,char *argv[])
   {
     int i;
     for(i = 0; i < argc;i++)
     printf("arg[%d]: %s
",i,argv[i]); return 0; }

    1.2  컴 파일:   
    1.3  생 성 된 a. out 을 echoarg 로 변경 하여 자신 이 정의 한 해석 기 를 얻 었 습 니 다.
 2. 해석 기 파일 -- interp 만 들 기
    2.1 새 텍스트 문서, interp 라 는 이름
    2.2 파일 에 해석 기 가 있 는 위 치 를 기록 합 니 다. 
     #!/home/wwe/code/interpreter/echoarg
  2.3   、    : 
  [root@localhost interpreter]# ll 
   -rw------- 1 root root   37 Aug 23 00:54 interp 

      실행 권한 이 없고 변경 되 었 음 을 알 수 있 습 니 다.
 [root@localhost interpreter]# chmod 777 interp1
 
     -rwxrwxrwx 1 root root   38 Aug 23 00:27 interp 

3. 테스트: 새 파일 interpreter. c  
 
#include <unistd.h>
#include <stdio.h>

int main()
{
  pid_t pid;
  int status;
  status = execl("/home/wwe/code/interpreter/interp1","interp1","myarg1","myarg2",(char*)0); 
  if(status < 0)
  printf("execl_err: %d
",status); return 1; }

 결과:
[root@localhost interpreter]# ./a.out 
arg[0]: /home/wwe/code/interpreter/echoarg
arg[1]: /home/wwe/code/interpreter/interp1
arg[2]: myarg1
arg[3]: myarg2

  해석 기 파일 에 선택 가능 한 인자 추가:
#! /home/wwe/code/interpreter/echoarg  "I come from interp1 file"

 
 결과:
[root@localhost interpreter]# ./a.out 
arg[0]: /home/wwe/code/interpreter/echoarg
arg[1]: "I come from interp1 file"
arg[2]: /home/wwe/code/interpreter/interp1
arg[3]: myarg1
arg[4]: myarg2
   

좋은 웹페이지 즐겨찾기