본문 바로가기
카테고리 없음

[System Programming] 7장 프로세스 실행 exec()

by winter_sunshine 2023. 10. 30.

1.  exec 함수군의 형태

  • exec 함수군6가지 형태가 있으며 각자 지정하는 인자가 약간씩 다름
  • 인자로 전달한 pathname이나 file에 설정한 명령이나 실행 파일을 실행
  • arg나 envp로 시작하는 인자를 pathname이나 file에 지정한 파일의 main() 함수에 전달
  • 각 함수별로 경로명까지 지정하거나 단순히 실행 파일명만 지정하는 등 차이가 있고 인자를 전달하는 형태에도 차이가 있음

 

2.  각 exec 함수군의 기능

  • execl()
    • pathname에 지정한 경로명의 파일을 실행하며 arg0~argn을 인자로 전달
    • 첫 인자인 arg0에는 실행 파일명을 지정
    • execl() 함수의 마지막 인자로는 인자의 끝을 의미 하는 NULL 포인터((char *)0)를 지정해야 함
    • pathname에 지정하는 경로명은 절대 경로나 상대 경로 모두 사용할 수 있음
  • execlp()
    • file에 지정한 파일을 실행하며 arg0~argn만 인자로 전달
    • 이 함수를 호출한 프로세스의 검색 경로(환경 변수 PATH에 정의된 경로)에서 파일을 찾음
    • arg0~argn은 포인터로 지정
    • execlp() 함수의 마지막 인자는 NULL 포인터로 지정해야 함
  • execle()
    • pathname에 지정한 경로명의 파일을 실행하며 arg0~argn과 envp를 인자로 전달
    • envp에는 새로운 환경 변수를 설정할 수 있음
    • arg0~argn을 포인터로 지정하므로 마지막 값은 NULL 포인터로 지정해야 함
    • envp는 포인터 배열
    • 이 배열의 마지막에는 NULL 문자열을 저장해야 함
  • execv()
    • pathname에 지정한 경로명에 있는 파일을 실행하며 argv를 인자로 전달
    • argv는 포인터 배열
    • 이 배열의 마지막에는 NULL 문자열을 저장해야 함
    • 함수명에 v가 들어간 함수는 명령행 인자를 포인터 배열로 지정
  • execvp()
    • file에 지정한 파일을 실행하며 argv를 인자로 전달
    • argv는 포인터 배열
    • 이 배열의 마지막에는 NULL 문자열을 저장해야 함
  • execvpe()
    • pathname에 지정한 경로명의 파일을 실행하며 argv, envp를 인자로 전달
    • argv와 envp는 포인터 배열
    • 이 배열의 마지막에는 NULL 문자열을 저장해야 함