재미있는 수학

Menu

execle 예제

동일한 제약 조건은 execle() 또는 execve()로 전달된 envp 배열에 적용되어 새 프로세스 이미지가 준수 환경에서 호출되도록 합니다. execle() 및 execvpe() 함수를 사용하면 호출자가 인수 envp를 통해 실행된 프로그램의 환경을 지정할 수 있습니다. envp 인수는 null-종단 문자열에 대한 포인터 의 배열이며 NULL 포인터로 종료되어야 합니다. 다른 함수는 호출 프로세스의 외부 변수 환경으로부터 새 프로세스 이미지에 대한 환경을 가져옵니다. 한 가지 일반적인 역사적 구현은 execl(), execv(), execle(), execve() 함수가 셸 스크립트를 포함하여 실행 파일로 인식할 수 없는 파일에 대해 [ENOEXEC] 오류를 반환한다는 것입니다. execlp() 및 execvp() 함수가 이러한 파일과 마주치면 해당 파일을 셸 스크립트로 가정하고 알려진 명령 인터프리터를 호출하여 해당 파일을 해석합니다. 이는 POSIX.1-2017에서 요구됩니다. execvp() 및 execlp()의 이러한 구현은 명령 인터프리터의 실행 파일에 문제가 있는 경우 드물게 [ENOEXEC] 오류를 제공합니다. 이러한 구현으로 인해 구현은 여전히 제공할 수 있지만 [ENOEXEC] 오류는 execlp() 또는 execvp()에 대해 언급되지 않습니다. execle()에 전달된 마지막 인수는 실행된 프로그램이 볼 환경 변수를 설명하는 C 문자열을 포함하는 char 포인터의 배열입니다. 다음은 예제입니다. execle()가 성공하면 반환되지 않습니다. 그렇지 않으면 -1을 반환하고 errno를 설정합니다.

execle() 함수는 현재 프로세스 이미지를 경로로 지정된 새 프로세스 이미지로 바꿉니다. 새 이미지는 새 프로세스 이미지 파일이라는 일반 실행 파일로 구성됩니다. 호출 프로세스 이미지가 새 프로세스 이미지로 대체되므로 반환되지 않습니다. 엄격하게 준수하는 POSIX 응용 프로그램에 대한 요구 사항은 첫 번째 인수로 전달된 값이 시작되는 프로세스와 연결된 파일 이름 문자열임을 명시합니다. 일부 기존 응용 프로그램은 경우에 따라 파일 이름 문자열이 아닌 pathname을 전달하지만 argv[0]의 일반적인 사용법은 인쇄 진단에 있기 때문에 파일 이름 문자열이 더 일반적으로 유용합니다. 경우에 따라 전달된 파일 이름이 파일의 실제 파일 이름이 아닙니다. 예를 들어, 로그인 유틸리티의 많은 구현에서는 실제 파일 이름에 (`-`)을 접두사하는 규칙을 사용하며, 이는 명령 인터프리터가 호출되는 명령 인터프리터가 “로그인 셸”임을 나타냅니다.

No categories

Comments

Sorry, comments are closed for this item.