SIGINT를 여러 프로세스에 보내는 방법

SIGINT를 여러 프로세스에 보내는 방법

여러 프로세스에 SIGINT 신호를 보내려고 하는데 이것이 맞는 것 같습니다.

kill -2 <pid1> <pid2> ... <pid3>

하지만 확인할 수는 없습니다...

답변1

네, 맞습니다. 매뉴얼 페이지에서 이를 확인합니다. 달리는 사람은 man kill이렇게 말했습니다.

SYNOPSIS
   kill [options] <pid> [...]

...

OPTIONS
   <pid> [...]
          Send signal to every <pid> listed.

쉘은 자체 내부 버전을 제공할 수 있으며 kill이 버전이 우선적으로 적용되지만 설명된 인터페이스와 호환되어야 합니다. 를 실행하면 더 많은 정보를 확인할 수 있습니다 help kill.

이름과 숫자의 매핑이 UNIX 변형에 따라 다를 수 있기 때문에 kill -INT대신 사용하겠습니다 .kill -2

답변2

이는 자체 복사본을 만들고, 신호에 반응하고, 신호를 기다리는 프로그램을 사용하여 쉽게 테스트할 수 있습니다.

% perl -E '$SIG{INT}=sub {say "ouch"};fork();fork();say $$;sleep 999'
17344
17346
17345
17347
ouch
ouch
ouch
ouch

쿠로사와는 다른 터미널로 닦는다

% kill -2 17344 17346 17345 17347

분명히 그는 도망 쳤습니다.

답변3

어때요?

for i in <pid1> <pid2> <pid3>; do kill -2 $i; done

또는:

for i in {17344..17347}; do kill -2 $i; done

관련 정보