2011-11-08 2 views
0

2 개의 프로그램 (저에게 쓴)이 있습니다. "MAN"이라는 첫 번째 호출은 백그라운드에서 실행될 프로세스 인 "D"(두 번째 호출)를 호출합니다.이 프로세스는 몇 가지 방법으로 종료 될 때까지 종료됩니다.자식 프로세스에서받은 SIGINT too

내가 Ctrl + C를 사용하여 MAN을 종료하려고 제대로 사람을 종료 D.

을 종료하지 않고 MAN을 종료하고 싶습니다 지금은 D 그러나 때, 계속 게재 싶다 (I는 SIGINT 신호를 도청) MAN은 CTRL + C를 받고 D도 수신합니다.

이 상황을 어떻게 처리합니까? D를 실행하고 CTRL + C를 사용하여 종료 할 수있는 가능성을 유지하는 것이 중요합니다. 문제는 내가 MAN을 통해 실행할 때 CTRL + C를 사용하여 종료 할 때 MAN에만 도달해야하는 경우가 아니라고 가정합니다.

의견이 있으십니까?

+2

올바른 방법은 콘솔에서 D 프로세스를 연결 해제하는 것이고, 이는 데몬이라고합니다. – sashoalm

+0

나는 이런 식으로 생각하고 있었지만 가능하다는 것을 몰랐다. –

답변

5

자식 프로세스 (D)는 setsid(2)을 호출하여 제어 터미널과의 연결을 해제해야합니다.

+0

확실히 잘 작동하고, 덕분에 (@ 싸툰도). –