종료 상태와 SIGCHLD
Linux 의 차이점은 무엇입니까 ?
자식이 종료 SIGCHLD
된 후 부모를 활성화하기 위한 신호가 전송됩니다 (에 의해 차단됨 wait()
). 왜 자식의 종료 상태가 필요한가요? SIGCHLD
와 종료 상태 사이의 링크를 찾을 수 없습니다 .
자식 프로세스의 종료 상태는 exit()
(또는 _exit()
) 시스템 호출을 통해 부모 프로세스로 반환되는 값 입니다. 이것은 일반적으로 자식 프로세스의 성공 또는 실패를 나타내는 간단한 정수입니다. 여기서 0은 성공을 나타냅니다 (일반적으로).
SIGCHLD는 자식이 종료 될 때 부모 프로세스로 보내는 신호입니다. 대기중인 부모에게 자녀가 종료되었음을 알립니다.
이 둘의 조합은 자식 프로세스의 실행 결과를 부모에게 다시 전달하는 데 사용됩니다. 신호는 자식이 종료되었을 때 부모에게 알려주고 종료 상태는 자식의 실행 결과가 무엇인지 부모에게 알려줍니다. 그것이 신호 (또는에서 반환받을 때까지 부모는 자녀의 종료 상태를 검색 할 수 없습니다 wait()
또는 waitpid()
아이가 종료되었음을 나타내는).
자식은 여러 방법 (다양한 IPC 메커니즘, 파일 I / O 등)으로 실행 결과를 부모에게 다시 전달할 수 있지만 가장 간단한 방법은 자식에서 부모로 정수 상태 코드를 사용 exit()
하고 wait()
보내는 것입니다.
부모 프로세스가 자식 실행 상태에 관심이없는 경우에서 반환 된 자식의 종료 코드를 무시할 수 있습니다 wait()
. 반면에 복잡한 시스템은 fork()
하위 프로세스의 새 인스턴스 를 다시 시작 ( ) 하기 위해 종료 상태가 무엇인지 알아야 하거나 하위 프로세스가 완료 한 경우 (또는 완료하지 않은 경우) 다른 프로그램을 실행해야 할 수 있습니다. 제대로 작업하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다