리눅스 명령어 배우기 - execv

execl, execlp, execle, execv, execvp - 파일 실행

개요

#include

extern char ** 환경;

int execl (const char * path , const char * arg , ...);
int execlp (const char * file , const char * arg , ...);
int execle (const char * path , const char * arg , ..., char * const envp []);
int execv (const char * path , char * const argv []);
int execvp (const char * file , char * const argv []);

exec 함수 설명

exec 계열의 함수는 현재 프로세스 이미지를 새 프로세스 이미지로 바꿉니다. 이 매뉴얼 페이지에서 설명하는 함수는 execve (2) 함수의 프론트 엔드입니다. 현재 프로세스의 대체에 대한 자세한 내용은 execve 매뉴얼 페이지를 참조하십시오.

이 함수의 초기 인수는 실행될 파일의 ​​경로 이름입니다.

execl , execlpexecle 함수의 const char * arg 및 후속 타원은 arg0 , arg1 , ..., argn 으로 생각할 수 있습니다. 그들은 함께 실행 된 프로그램에서 사용할 수있는 인수 목록을 나타내는 하나 이상의 null 종료 문자열에 대한 포인터 목록을 설명합니다. 규칙에 따라 첫 번째 인수는 실행중인 파일과 관련된 파일 이름을 가리켜 야합니다. 인수 목록은 NULL 포인터로 종료 되어야합니다 .

execvexecvp 함수는 새 프로그램에서 사용할 수있는 인수 목록을 나타내는 null로 끝나는 문자열에 대한 포인터 배열을 제공합니다. 규칙에 따라 첫 번째 인수는 실행중인 파일과 관련된 파일 이름을 가리켜 야합니다. 포인터 배열은 NULL 포인터로 끝나야 합니다 .

또한 execle 함수는 매개 변수 목록의 인수 목록을 종료하는 NULL 포인터 나 추가 매개 변수가있는 argv 배열에 대한 포인터를 따라 실행 된 프로세스의 환경을 지정합니다. 이 추가 매개 변수는 널 (null)로 끝나는 문자열에 대한 포인터의 배열이며 NULL 포인터로 끝나야 합니다 . 다른 함수는 현재 프로세스의 외부 변수 environ 에서 새 프로세스 이미지에 대한 환경을 가져옵니다.

이러한 함수 중 일부는 특별한 의미 체계를 가지고 있습니다.

execlpexecvp 함수는 지정된 파일 이름에 슬래시 (/) 문자가 없으면 실행 파일을 검색 할 때 쉘의 조치를 복제합니다. 탐색 경로는 환경에서 PATH 변수로 지정된 경로입니다. 이 변수를 지정하지 않으면 기본 경로 인`: / bin : / usr / bin '이 사용됩니다. 또한 특정 오류는 특별히 처리됩니다.

파일에 대한 사용 권한이 거부되면 (시도 된 execve가 EACCES를 반환했습니다),이 함수는 나머지 검색 경로를 계속 검색합니다. 그러나 다른 파일이 발견되지 않으면 전역 변수 errnoEACCES로 설정하여 리턴합니다.

파일의 헤더가 인식되지 않으면 (시도 된 execve가 ENOEXEC을 리턴 함),이 함수는 파일의 경로를 첫 번째 인수로 사용하여 쉘을 실행합니다. 이 시도가 실패하면 더 이상의 검색이 수행되지 않습니다.

exec 함수의 반환 값

exec 함수 중 하나가 반환되면 오류가 발생합니다. 리턴 값은 -1이고, 전역 변수 errno 는 오류를 나타내도록 설정됩니다.