[java] 유닉스/리눅스 시스템 호출을 사용하여 프로세스 사이의 특정 신호를 전송하는 방법에 대해 알려주세요.
유닉스와 리눅스 운영 체제에서 프로세스는 다른 프로세스에게 신호를 보내어 특정한 동작을 유도할 수 있습니다. 이러한 기능은 시스템 호출을 사용하여 구현됩니다. 가장 일반적인 시스템 호출 중 하나는 kill
입니다. kill
시스템 호출을 사용하여 특정 프로세스에게 시그널을 보낼 수 있습니다.
kill
시스템 호출을 사용하여 신호 보내기
public class SignalSender {
public static void main(String[] args) {
int pid = 12345; // 전송할 프로세스의 ID
int signal = 15; // 보낼 신호 (예: SIGTERM)
if (kill(pid, signal) == 0) {
System.out.println("신호 전송 성공");
} else {
System.out.println("신호 전송 실패");
}
}
}
위의 예제에서 kill
시스템 호출을 사용하여 프로세스 ID가 12345인 프로세스에게 시그널 15(SIGTERM)을 보내는 방법을 보여줍니다.
주요 신호
유닉스/리눅스 시스템에서 사용되는 주요 신호에는 다음과 같은 것들이 있습니다.
SIGHUP
: 제어 터미널 끊김SIGINT
: 프로세스에 대한 인터럽트 신호 (Ctrl + C와 같음)SIGKILL
: 프로세스를 강제로 종료SIGTERM
: 프로세스에게 종료 신호를 보냄
이러한 신호들은 프로세스 간 통신이나 프로세스 제어에 사용됩니다.
위의 예제는 kill
시스템 호출을 사용하여 프로세스 사이에 특정 신호를 전송하는 방법에 대해 설명한 것입니다. 이것은 유닉스/리눅스 시스템 프로그래밍에서 매우 중요한 주제 중 하나입니다.
참고문헌:
- https://man7.org/linux/man-pages/man2/kill.2.html
- Stevens, W. Richard, and Stephen A. Rago. Advanced Programming in the UNIX Environment. Addison-Wesley, 2013.