SIGUSR1 및 SIGUSR2를 트리거하는 방법
C의 신호에 익숙해지고 있습니다.어떤 신호인지 알 수가 없네요.SIGUSR1
그리고.SIGUSR2
어떻게 작동시킬 수 있을까요?누가 설명 좀 해주시겠어요?
이러한 신호는 사용자 정의 신호이므로 특정 작업에 의해 트리거되지 않습니다.명시적으로 프로그래밍 방식으로 전송할 수 있습니다.
#include <signal.h>
kill(pid, SIGUSR1);
어디에pid
는, 수신 프로세스의 프로세스 ID 입니다.수신측에서 신호 핸들러를 등록할 수 있습니다.
#include <signal.h>
void my_handler(int signum)
{
if (signum == SIGUSR1)
{
printf("Received SIGUSR1!\n");
}
}
signal(SIGUSR1, my_handler);
터미널 1
dd if=/dev/sda of=debian.img
터미널 2
killall -SIGUSR1 dd
제1터미널로 돌아가다
34292201+0 records in
34292200+0 records out
17557606400 bytes (18 GB) copied, 1034.7 s, 17.0 MB/s
애플리케이션 개발자가 사용하는 신호입니다.커널은 이것들을 프로세스로 전송해서는 안 됩니다.다음 방법으로 보낼 수 있습니다.kill(2)
또는 유틸리티를 사용하여kill(1)
.
동기화에 신호를 사용하는 경우 실시간 신호를 확인할 수 있습니다(신호 수가 더 많거나, 대기열에 있거나, 전달 순서가 보장되는 등).
언급URL : https://stackoverflow.com/questions/6168636/how-to-trigger-sigusr1-and-sigusr2
'programing' 카테고리의 다른 글
TypeError: 'undefined' 또는 'null'의 속성 'compile'을 파기할 수 없습니다. (0) | 2022.07.30 |
---|---|
스트림의 개념을 설명할 수 있나요? (0) | 2022.07.30 |
Vuetify Carousel 구성 요소의 오른쪽/왼쪽 화살표를 켜고 끄는 방법 (0) | 2022.07.30 |
사용하시는 어플리케이션에서 sql과 sql의 계산을 실행하는 경우의 장점과 단점은 무엇입니까? (0) | 2022.07.30 |
getchar()는 입력 문자열과 동일한 출력을 제공합니다. (0) | 2022.07.30 |