C와 C ++에서 사용되는 exec의 다른 버전은 무엇입니까?
이들은 C (및 C ++)에서 사용할 수있는 모든 exec 버전입니다.
execl
execle
execlp
execv
execve
execvp
그들 사이의 차이점은 무엇입니까? 어떤 것을 사용할지 어떻게 알 수 있습니까?
차이점은 다음의 조합입니다.
L vs V : 매개 변수를 실행 된 프로그램에 다음과 같이 전달할지 여부
- L : 통화 개별 파라미터 (변수 인수리스트)
execl()
,execle()
,execlp()
, 및execlpe()
- V : 숯 *의 배열로서
execv()
,execve()
,execvp()
및execvpe()
배열 형식은 실행 된 프로세스로 보낼 매개 변수의 수가 가변적 일 때 유용합니다. 사전에 알려지지 않았기 때문에 함수 호출에 고정 된 수의 매개 변수를 넣을 수 없습니다.
- L : 통화 개별 파라미터 (변수 인수리스트)
E : 끝에 'e'가있는 버전을 사용하면 실행 된 프로그램이 시작되기 전에 생성 된 프로세스 환경에 추가 된 문자열 집합 인 char * 배열을 추가로 전달할 수 있습니다. 매개 변수를 전달하는 또 다른 방법입니다.
P : 'p'가있는 버전은 환경 경로 변수를 사용하여 실행할 이름의 실행 파일을 검색합니다. '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"페이지 # 416-책을 추천 할 수 있습니다.
'IT박스' 카테고리의 다른 글
MySQL-하나의 INSERT 문에 몇 개의 행을 삽입 할 수 있습니까? (0) | 2020.10.05 |
---|---|
긴 ASP.NET 작업에 대한 IIS 요청 시간 초과 (0) | 2020.10.05 |
사전의 값으로 키 가져 오기 (0) | 2020.10.04 |
Ruby에서 파일에 쓰는 방법? (0) | 2020.10.04 |
PostgreSQL : 텍스트와 varchar의 차이점 (문자가 다름) (0) | 2020.10.04 |