execvp 함수 예제
이제 주요 함수에서 readline을 호출하여 사용자의 입력을 읽고 위에서 정의한 get_input에 전달합니다. 입력이 구문 분석되면, 우리는 포크를 호출하고 자식 프로세스에서 execvp를 호출합니다. 코드를 살펴보기 전에 다음 다이어그램을 살펴보고 execvp의 의미체계를 먼저 이해하십시오. 또한 사용자가 입력한 명령이 cd(또는 미리 정의된 기본 제공 명령 목록에 속하는 경우)인 경우 프로세스를 전혀 포크하지 않도록 해야 합니다. 대신 cd(또는 다른 기본 제공)의 구현을 실행하고 다음 사용자 입력을 기다립니다. CD의 경우, 다행히 우리는 우리에게 사용할 수있는 chdir 함수 호출을 가지고 있으며 그것을 사용하는 것은 간단합니다. 경로는 인수로 받아들이고 성공 시 0을 반환하고 실패할 경우 -1을 반환합니다. 함수의 이름을 정의하는 vp는 시스템의 $PATH 변수와 실행할 인수 배열에서 검색할 파일의 이름을 수락한다는 것을 나타냅니다. 설명 및 RATIONALE는 프로세스 이미지 파일의 내용이 exec 함수의 동작에 미치는 영향에 대한 설명을 포함하도록 업데이트됩니다. 표준 개발자가 지적한 혼란의 한 가지 잠재적인 원인은 프로세스 이미지 파일의 내용이 기능 의 exec 제품군의 동작에 미치는 영향에 대한 것입니다. 다음은 수행된 작업에 대한 설명입니다: exec 함수를 성공적으로 호출한 후 atexit() [THR] 또는 pthread_atfork()에 의해 이전에 등록된 모든 함수는 더 이상 등록되지 않습니다.
다른 기능에 대한 자세한 내용은 임원에 대한 남자 페이지를 읽을 수 있습니다. [THR] 다중 스레드 응용 프로그램을 준수하는 것은 환경 변수에 액세스하거나 수정하기 위해 환경 변수를 사용하거나 수정하지 않아야 하며 다른 스레드는 환경 변수를 동시에 수정합니다. 환경 변수에 종속된 함수에 대한 호출은 해당 환경 변수에 액세스하기 위해 환경 변수를 사용하는 것으로 간주됩니다. 이것은 기능의 집행 가족에게 우리를 제공합니다. 즉, 다음과 같은 기능이 있습니다: 이러한 모든 함수가 실패하고 execve(2)에 대해 지정된 오류에 대해 errno를 설정할 수 있습니다. 호출 프로세스 이미지의 기본 동작(SIG_DFL)으로 설정된 신호는 새 프로세스 이미지의 기본 동작으로 설정되어야 합니다. SIGCHLD를 제외하고 호출 프로세스 이미지에 의해 무시하도록 설정된 신호(SIG_IGN)는 새 프로세스 이미지에서 무시하도록 설정되어야 합니다. 호출 프로세스 이미지에 의해 잡힐 수 있도록 설정된 신호는 새 프로세스 이미지의 기본 동작으로 설정되어야 합니다(참조). 호출 프로세스 이미지에서 SIGCHLD 신호를 무시하도록 설정된 경우 SIGCHLD 신호가 무시되거나 새 프로세스 이미지의 기본 동작으로 설정되어 있는지 지정되지 않습니다.
0 Comments