c exec 예제

Postato il 2 Ago 2019 in Senza categoria

Exec 함수는 파일(프로그램)을 실행(시작)하려는 경우에 사용됩니다. [THR] 스레드가 두 개 이상 인 프로세스의 모든 exec 함수를 호출하면 모든 스레드가 종료되고 새 실행 이미지가 로드되고 실행됩니다. 소멸자 함수 또는 정리 처리기를 호출할 수 없습니다. exec 함수 중 하나를 사용하는 프로그램에서 지정한 인수는 해당 main() 인수의 새 프로세스 이미지로 전달됩니다. 추측할 수 있듯이 fork.c의 소스 코드가 실행된 시점과 getpid.c가 실행된 시간 사이에 운영 체제에서 약 1000개의 프로세스가 만들어졌습니다. 설명에서 동작은 프로세스 이미지 파일이 유효한 실행 파일이 아닌 경우에 대해 정의됩니다. 한 가지 일반적인 역사적 구현은 execl(), execv(), execle(), execve() 함수가 셸 스크립트를 포함하여 실행 파일로 인식할 수 없는 파일에 대해 [ENOEXEC] 오류를 반환한다는 것입니다. execlp() 및 execvp() 함수가 이러한 파일과 마주치면 해당 파일을 셸 스크립트로 가정하고 알려진 명령 인터프리터를 호출하여 해당 파일을 해석합니다. 이것은 이제 IEEE Std 1003.1-2001에 의해 요구됩니다. execvp() 및 execlp()의 이러한 구현은 명령 인터프리터의 실행 파일에 문제가 있는 경우 드물게 [ENOEXEC] 오류를 제공합니다. 이러한 구현으로 인해 구현은 여전히 제공할 수 있지만 [ENOEXEC] 오류는 execlp() 또는 execvp()에 대해 언급되지 않습니다.

다음 프로그램은 포크와 임원을 모두 사용합니다. 함수는 포크이고 자식 프로세스인 경우 인수 “”를 가진 find 명령을 시작합니다. 파일: 실행 중인 파일과 관련된 파일 이름 const char *arg 및 타원 : 실행된 프로그램에 사용할 수 있는 인수 목록을 나타내는 null-terminated 문자열에 대한 하나 이상의 포인터 목록을 설명합니다. IEEE Std 1003.1-2001의 이 볼륨은 SIG_IGN으로 설정된 신호가 SIG_IGN으로 설정되고 새 프로세스 이미지가 이전 프로세스 이미지에서 exec이라고 하는 스레드의 신호 마스크를 상속하도록 지정합니다. 이는 기록 구현과 일치하며 nohup 명령과 같은 몇 가지 유용한 기능을 허용합니다. 그러나 많은 기존 응용 프로그램이 기본 동작으로 설정되거나 차단 해제된 특정 신호로 시작한다고 잘못 가정합니다. 특히 ISO C 표준의 신호 차단과 같이 신호 차단을 포함하지 않는 더 간단한 신호 모델로 작성된 응용 프로그램은 일부 신호가 차단된 경우 제대로 작동하지 않을 수 있습니다. 따라서 명시적인 이유 없이 임원 간부 간에 신호를 차단하거나 무시하지 않으며, 특히 임의(밀접하게 협력하지 않음) 프로그램의 임원간 신호를 차단하지 않는 것이 가장 좋습니다. 모든 응용 프로그램(프로그램)은 프로세스 수단을 통해 실행되며 프로세스는 프로그램의 실행 중인 인스턴스입니다.