하위 프로세스가 상위 프로세스에 준비 신호를 보내는 안정적인 방법이 있습니까? [폐쇄]

하위 프로세스가 상위 프로세스에 준비 신호를 보내는 안정적인 방법이 있습니까? [폐쇄]

별도의 프로세스를 시작하는 (Java) 프로세스가 있습니다 foo. foo시작하고 실제로 실행하는 데 몇 초가 걸립니다. 제어권은 시작되자마자 상위 프로세스로 반환되지만 foo반드시 준비되지는 않습니다.

또한 디버그 모드에서는 foo사람이 읽을 수 있는 출력이 및 에 기록됩니다.stdoutstderr

내가 아는 옵션:

  1. sleep상위 프로세스는 이론적으로 이전보다 n몇 초 정도 더 오래 걸립니다.nfoo
  2. stdout부모 프로세스가 자식 프로세스에서 특별한 것을 찾도록 stderr하고 이를 발견할 때까지 차단합니다.
  3. 준비가 되면 운영 체제에서 일종의 플래그 파일을 터치 foo하고 상위 프로세스가 파일을 감시하도록 하세요.

나는 이러한 옵션 중 어떤 것도 정말 마음에 들지 않습니다(1. 경쟁 조건이 있음, 2. 마법 문자열 일치와 관련됨, 3. foo여러 프로세스가 충돌할 위험이 있음). 다른 방법(부모 프로세스에서 자식 프로세스로)으로 신호를 보내 통신할 수 있지만 자식 프로세스가 자신의 상태를 부모 프로세스에 전달하는 더 좋은 방법을 모르겠습니다.

답변1

아이들은 부모에게 신호를 보낼 수 있습니다. SIGUSR1그리고 SIGUSR2이를 위해 존재한다애드 혹여기 상황이 이상적일 수도 있습니다.

애플리케이션은 해당 Java 코드를 사용하여 상위 프로세스 ID를 쉽게 찾을 수 있습니다 getppid(). 또는 대안으로 상위 프로세스가 $$명령줄에서 자체 PID(PID)를 Java 코드가 가져올 수 있는 매개변수로 전달하도록 할 수 있습니다.

관련 정보