Вы можете перехватывать сигналы внутри вашего кода и обрабатывать их при работе с sh.
Вот базовый пример c, вам нужно зарегистрировать обратный вызов для обработки сигнала, который вы хочу поймать. В этом случае SIGINT
:
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void sig_handler(int signo)
{
if (signo == SIGINT) {
printf("received SIGINT\n");
}
}
int main(void)
{
if (signal(SIGINT, sig_handler) == SIG_ERR) {
printf("\ncan't catch SIGINT\n");
}
// A long long wait so that we can easily issue a signal to this process
while(1) {
sleep(1);
}
return 0;
}
Итак, в этом примере функция sig_handler()
зарегистрирована для обработки сигнала SIGINT
с помощью вызова signal(SIGINT, sig_handler)
.
Больше примеров в здесь .