linux execl 예제
위에 표시된 동일한 C 프로그램은 execlp() 또는 execl() 함수로 실행할 수 있으며 현재 프로세스를 새 프로세스로 대체하는 것과 동일한 작업을 수행합니다. 다른 시스템에서기본 경로(환경에 변수 PATH가 포함되지 않은 경우 사용됨)에는 /bin 및 /usr/bin 다음에 나열된 현재 작업 디렉터리(안티 트로이 목마 측정값)가 있습니다. 리눅스는 여기에 기존의 “현재 디렉토리 우선” 기본 경로를 사용합니다. 파일을 실행하려고 시도하는 동안 오류가 발생할 때 execlp() 및 execvp()의 동작은 역사적인 관행이지만 전통적으로 문서화되지 않았으며 POSIX 표준에 의해 지정되지 않았습니다. ETXTBSY가 발생하면 BSD(및 기타 시스템)가 자동 절전 모드로 재시도합니다. 리눅스는 하드 오류로 처리하고 즉시 반환합니다. 또한 execle 함수는 매개 변수 목록의 인수 목록을 종료하는 NULL 포인터 또는 추가 매개 변수가 있는 argv 배열에 대한 포인터를 따라 실행된 프로세스의 환경을 지정합니다. 이 추가 매개 변수는 null-종료된 문자열에 대한 포인터 배열이며 NULL 포인터로 종료되어야 합니다. 다른 함수는 현재 프로세스의 외부 변수 환경으로부터 새 프로세스 이미지에 대한 환경을 가져옵니다.
execl, execlp, execvpe, execvpe – 파일을 실행 함수 execlp 및 execvp는 지정된 파일 이름에 슬래시 (/) 문자가 포함되어 있지 않은 경우 실행 파일을 검색할 때 셸의 작업을 복제합니다. 검색 경로는 PATH 변수에 의해 환경에 지정된 경로입니다. 이 변수를 지정하지 않으면 기본 경로 “:/bin:/usr/bin`이 사용됩니다. 또한 특정 오류는 특별히 처리됩니다. 또한 execl()에서 반환 코드를 검사하여 호출이 실패했는지 확인해야 합니다. 실패한 경우 perror()를 사용하여 오류 메시지를 인쇄할 수 있습니다. 시스템의 perror는 설명서를 참조하십시오. 함수의 exec 제품군은 현재 실행 중인 프로세스를 새 프로세스로 대체합니다.
다른 C 프로그램을 사용하여 C 프로그램을 실행하는 데 사용할 수 있습니다. 그것은 헤더 파일 unistd.h 아래에 온다. exec 가족에는 예와 함께 아래에 표시된 많은 구성원이 있습니다. 일반적으로 함수 execlp() 및 execvp()는 위에서 설명한 오류와 ENOMEM 및 E2BIG을 제외한 모든 오류를 무시했습니다. 위에서 설명한 것 이외의 오류가 발생하면 반환됩니다. C에서 execvp() 함수를 사용하는 방법을 보여 줄 작은 예제를 살펴보겠습니다. 우리는 두 가지를해야합니다. C 파일 , EXEC.c 및 execDemo.c 우리는 execDemo.c에서 execvp() 함수를 호출하여 execDemo.c로 execDemo.c를 대체합니다.