2011-07-01 2 views
1

다른 C 프로그램에서 실행중인 셸 스크립트를 중지하려고합니다. 아래 코드 : kill (pid, SIGSTOP); 쉘 스크립트가 중단 될 커널 관련 지연이 있는지 알고 싶었습니다.SIGSTOP을 사용하여 Linux 프로세스를 중지 할 시간

다른 말로하면 SIGSTOP이 다른 프로세스를 중지시키는 최악의 경우는 무엇입니까? SIGCONT에 비슷한 지연이 있습니까?

답변

3

무중단 절전 모드에서 멈추는 프로세스의 경우 SIGSTOP에 대한 최악의 경우 (무한대는 시스템 종료까지)입니다. 일반적으로 커널 공간에서 물리적으로 손상되거나 무언가가 충돌하여 절대 완료되지 않을 것입니다.

대부분의 다른 신호와는 달리 SIGSTOP이 커널 공간에서 완전히 처리되는 경우에도 최상의 경우는 시스템로드와 cpus의 수에 따라 달라집니다. 모든 신호는 비동기식이며 무한대이지만 SIGSTOP은 여전히 ​​무한대 일지라도 주어진 프로세스에 대한 모든 신호의 대기 시간이 가장 짧습니다.

+0

이것은 SIGSTOP 및 SIGCONT (그리고 실제로는 다른 모든 신호)에 적용됩니다. –

4

kill은 비동기입니다. 즉, 일반적으로 걸리는 시간은 제한되지 않습니다. 예를 들어, 시스템에 과도한 부하가 걸리면 시간이 오래 걸립니다. 대상 프로세스가 유휴 상태 일지라도 시간의 100 %를 작동 할 경계는 없습니다.

kill이 임의로 길어질 수있는 응용 프로그램을 디자인해야합니다. 얼마나 오래 걸릴지는 신경 쓰지 않아도됩니다. 왜 신경 써야하는지에 대해 자세히 설명해 주면 누군가가 그 문제를 해결할 수있는 방법에 대한 제안을 줄 수 있습니다.

관련 문제