C와 C ++에서 사용되는 exec의 다른 버전은 무엇입니까?


91

이들은 C (및 C ++)에서 사용할 수있는 모든 exec 버전입니다.

execl
execle
execlp
execv
execve
execvp

그들 사이의 차이점은 무엇입니까? 어떤 것을 사용할지 어떻게 알 수 있습니까?

답변:


181

차이점은 다음의 조합입니다.

  1. L vs V : 매개 변수를 실행 된 프로그램에 다음과 같이 전달할지 여부

    • L : 통화 개별 파라미터 (변수 인수리스트) execl(), execle(), execlp(), 및execlpe()
    • V : 숯 *의 배열로서 execv(), execve(), execvp()execvpe()

    배열 형식은 실행 된 프로세스로 전송 될 매개 변수의 수가 가변적 일 때 유용합니다. 사전에 알려지지 않았기 때문에 함수 호출에 고정 된 수의 매개 변수를 넣을 수 없습니다.

  2. E : 끝에 'e'가있는 버전을 사용하면 실행 된 프로그램이 시작되기 전에 생성 된 프로세스 환경에 추가 된 문자열 집합 인 char * 배열을 추가로 전달할 수 있습니다. 매개 변수를 전달하는 또 다른 방법입니다.

  3. P : 거기에 'p'가있는 버전은 PATH 실행할 이름의 실행 파일을 검색하기 위해 환경 변수 를 사용합니다 . 'p'가없는 버전은 현재 작업 디렉토리에없는 경우 실행 파일의 파일 이름 앞에 절대 또는 상대 파일 경로를 추가해야합니다.


1
내가 지금까지 본 최고의 설명. 공식 문서 / 참조만큼 짧지 만 표현력이 풍부하고 정보가 풍부하며 이해하기 쉽습니다. 감사합니다.
Akito

5

Opengroup은 핵심 c / c ++ 함수에 대한 최고의 일반 참조 중 하나입니다.

exec *에 대한 문서는 여기에 있습니다 : http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html


2
이것은 실제로 질문에 대답하지 않으며 링크 일뿐입니다.
Jean-François Fabre

여기에 도착하기 전에 웹 사이트의 문서를 읽었지만 큰 도움이되지 않았습니다. 정교해야하지만 설명은 매우 짧습니다. 또한 처음부터 검색하는 경우 찾고있는 내용에 대한 올바른 설명을 찾기가 어렵습니다.
Akito

-4

C 런타임 라이브러리의 Posix 확장입니다. 공식 Posix 문서가 충분하지 않다면 나는 책을 추천 할 수 있습니다-Samuel P. Harbison, Guy L.Steele, 2002 "CA Reference"Page # 416-그 질문을 다룹니다.


2
이 링크가 질문에 답할 수 있지만 여기에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다. - 리뷰에서
31piy dec

링크는 독자에게 유용하기 위해 아마존과 posxis standart에 대한 것이었다. 좋습니다. 요청하신대로 링크를 삭제했습니다.이게 더 좋다는 데 동의하지 않습니다. 이제 더 읽기 쉬운 경우 donwvote를 제거하십시오.
bruziuz

1
나는 당신의 대답에 대해 반대표를 던지지 않았습니다. 방금 귀하의 답변에 대한 리뷰를 받았는데 품질이 낮다고 생각했습니다. 링크를 제거하려는 것이 아닙니다. 여기서 요점은 링크에서 관련 발췌문을 포함하여 미래의 독자가 답을 즉시 이해할 수 있도록 돕는 것입니다. 답변에 링크를 게시하는 것만으로는 누구에게도 도움이되지 않습니다.
31piy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.