waitpid 예제

Off
Non classé

일부 시스템에서는 반환 값이 -1이면 자식 프로세스가 자동으로 수확될 수 있습니다. 자세한 내용 및 기타 예제는 perlipc를 참조하십시오. 시스템에서 생성된 모든 SIGCHLD 신호의 신뢰할 수 있는 대기열이 이러한 보증을 할 수 있다고 가정할 수 있지만, 반대 예는 SIGCHLD를 차단하고 포크()/wait() 작업의 무기한 루프를 수행하는 프로세스의 경우입니다. 구현이 큐에 대기된 신호를 지원하는 경우 결국 시스템은 큐에 대한 메모리가 부족해집니다. 대기열 의 깊이에 약간의 제한이 있어야하기 때문에 보증을 할 수 없습니다. waitpid() 함수의 세 번째 이유는 프로세스의 독립적인 섹션이 서로 간섭하지 않고 생성되고 자식이 대기하도록 허용하는 것입니다. 예를 들어, 다음 문제는 휴대용 셸 또는 명령 인터프리터를 개발할 때 발생합니다: 이러한 기능 중 처음 두 개는 4.3 BSD에서 제공하는 wait3() 함수를 기반으로 합니다. 함수는 wait3() 인수와 동일한 옵션 인수를 사용합니다. WUNTRACED 플래그는 작업 제어를 지원하는 시스템의 작업 제어와 함께만 사용됩니다. 그 이름은 4.3 BSD에서 유래하고 그 구현에서 중지 된 프로세스의 두 가지 유형이 있다는 사실을 의미한다: ptrace() 디버깅 기능을 통해 추적되는 프로세스와 (추적되지 않은) 프로세스는 작업 제어 신호에 의해 중지. ptrace()는 IEEE Std 1003.1-2001의 이 볼륨에 속하지 않으므로 두 번째 형식만 관련이 있습니다.

이 컨텍스트에서 이름이 직관적으로 의미가 없더라도 WUNTRACED라는 이름은 사용법이 동일하기 때문에 유지되었습니다. 자식이 이미 실행을 중지한 경우 $pid 전달한 실제 프로세스 ID인 상태 코드를 반환합니다. 상태 코드는 일부 오류가 발생할 경우 -1이고 자식이 여전히 실행 중인 경우 0입니다. 마지막으로 while 루프를 종료한 후 wait()를 호출하면 더 이상 실행중인 자식 프로세스가 없기 때문에 차단되지 않습니다. 이 정보는 값에 관계없이 에 정의된 다음 매크로를 사용하여 해석될 수 있으며 정수 식으로 평가할 수 있습니다. stat_val 인수는 stat_loc가 가리키는 정수 값입니다. 이러한 매크로는 임의정수 값으로 구문적으로 작동합니다. stat_loc 인수가 가리키는 위치에 있는 wait() 또는 waitpid()에 대한 성공적인 호출에 의해 해당 값이 저장되지 않는 한 동작은 정의되지 않습니다. 초기 제안은 각 인수를 stat_val이 아닌 *stat_loc로 지정하여 이를 명확하게 하려고 했습니다.

그러나 IEEE Std 1003.1-2001 또는 기존 사용의 이 볼륨에서 다른 사양의 규칙을 따르지 않았습니다. 또한 매크로에 대한 인수가 문자 그대로 *stat_loc이어야 함을 암시할 수도 있습니다. 실제로 이 값은 이러한 매크로에 의해 해석되기 전에 다른 함수에 인수로 저장되거나 전달될 수 있습니다. . 상태 값은 매크로에 의해 검색됩니다. 이는 구현이 기존 인코딩에 내재된 지원할 수 있는 신호 수에 대한 제한을 제거하는 데 필요했습니다. IEEE Std 1003.1-2001의 이 볼륨은 기존 프로그램에서 예상되는 가장 일반적인 인코딩이기 때문에 상태 값이 _exit(0)를 호출하는 프로세스에 해당하도록 요구합니다.

Comments are closed.