이들은 C (및 C ++)에서 사용할 수있는 모든 exec 버전입니다.
execl
execle
execlp
execv
execve
execvp
그들 사이의 차이점은 무엇입니까? 어떤 것을 사용할지 어떻게 알 수 있습니까?
답변:
차이점은 다음의 조합입니다.
L vs V : 매개 변수를 실행 된 프로그램에 다음과 같이 전달할지 여부
execl()
, execle()
, execlp()
, 및execlpe()
execv()
, execve()
, execvp()
및execvpe()
배열 형식은 실행 된 프로세스로 전송 될 매개 변수의 수가 가변적 일 때 유용합니다. 사전에 알려지지 않았기 때문에 함수 호출에 고정 된 수의 매개 변수를 넣을 수 없습니다.
E : 끝에 'e'가있는 버전을 사용하면 실행 된 프로그램이 시작되기 전에 생성 된 프로세스 환경에 추가 된 문자열 집합 인 char * 배열을 추가로 전달할 수 있습니다. 매개 변수를 전달하는 또 다른 방법입니다.
P : 거기에 'p'가있는 버전은 PATH
실행할 이름의 실행 파일을 검색하기 위해 환경 변수 를 사용합니다 . 'p'가없는 버전은 현재 작업 디렉토리에없는 경우 실행 파일의 파일 이름 앞에 절대 또는 상대 파일 경로를 추가해야합니다.
Opengroup은 핵심 c / c ++ 함수에 대한 최고의 일반 참조 중 하나입니다.
exec *에 대한 문서는 여기에 있습니다 : http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
C 런타임 라이브러리의 Posix 확장입니다. 공식 Posix 문서가 충분하지 않다면 나는 책을 추천 할 수 있습니다-Samuel P. Harbison, Guy L.Steele, 2002 "CA Reference"Page # 416-그 질문을 다룹니다.