Я получил эту программу, которую прислал мне мой друг. И оба были новыми в ubuntu, и она спросила меня, что произойдет, если мы введем ctrl-c на терминале
#include <signal.h>
#include <stdio.h>
void catch(int signo) {
printf("Signal %d caught\n", signo);
sleep(2);
}
int main() {
int i;
struct sigaction act;
act.sa_flags = 0;
act.sa_handler = catch;
sigfillset(&(act.sa_mask));
if (sigaction(SIGINT, &act, NULL) != 0) {
perror("sigaction");
exit(1);
}
for (i = 0; i < 100; ++i) {
printf("sleep %d ....\n", i);
sleep(1);
}
exit(0);
}
Что произойдет:
ваш терминал отправит сигнал SIGINT (прерывание), ваш процесс перехватит сигнал и передаст свое числовое значение 2 на вашу функцию catch, которая будет печатать Signal 2 caught, перехватив и обработав сигнал, программа продолжит основной цикл печати / снаНапример
sleep 0 ....
sleep 1 ....
sleep 2 ....
sleep 3 ....
sleep 4 ....
^CSignal 2 caught
sleep 5 ....
sleep 6 ....
sleep 7 ....
Вы сможете убить программу, отправив сигнал SIGKILL, например приостановив процесс с помощью CtrlZ и затем набрав pkill myprog (где myprog - имя вашей скомпилированной исполняемой версии кода).
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
См. man 7 signal для получения дополнительной информации о сигналах и обработка сигналов.
Что произойдет:
ваш терминал отправит сигнал SIGINT (прерывание), ваш процесс перехватит сигнал и передаст свое числовое значение 2 на вашу функцию catch, которая будет печатать Signal 2 caught, перехватив и обработав сигнал, программа продолжит основной цикл печати / снаНапример
sleep 0 ....
sleep 1 ....
sleep 2 ....
sleep 3 ....
sleep 4 ....
^CSignal 2 caught
sleep 5 ....
sleep 6 ....
sleep 7 ....
Вы сможете убить программу, отправив сигнал SIGKILL, например приостановив процесс с помощью CtrlZ и затем набрав pkill myprog (где myprog - имя вашей скомпилированной исполняемой версии кода).
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
См. man 7 signal для получения дополнительной информации о сигналах и обработка сигналов.
Что произойдет:
ваш терминал отправит сигнал SIGINT (прерывание), ваш процесс перехватит сигнал и передаст свое числовое значение 2 на вашу функцию catch, которая будет печатать Signal 2 caught, перехватив и обработав сигнал, программа продолжит основной цикл печати / снаНапример
sleep 0 ....
sleep 1 ....
sleep 2 ....
sleep 3 ....
sleep 4 ....
^CSignal 2 caught
sleep 5 ....
sleep 6 ....
sleep 7 ....
Вы сможете убить программу, отправив сигнал SIGKILL, например приостановив процесс с помощью CtrlZ и затем набрав pkill myprog (где myprog - имя вашей скомпилированной исполняемой версии кода).
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
См. man 7 signal для получения дополнительной информации о сигналах и обработка сигналов.
Что произойдет:
ваш терминал отправит сигнал SIGINT (прерывание), ваш процесс перехватит сигнал и передаст свое числовое значение 2 на вашу функцию catch, которая будет печатать Signal 2 caught, перехватив и обработав сигнал, программа продолжит основной цикл печати / снаНапример
sleep 0 ....
sleep 1 ....
sleep 2 ....
sleep 3 ....
sleep 4 ....
^CSignal 2 caught
sleep 5 ....
sleep 6 ....
sleep 7 ....
Вы сможете убить программу, отправив сигнал SIGKILL, например приостановив процесс с помощью CtrlZ и затем набрав pkill myprog (где myprog - имя вашей скомпилированной исполняемой версии кода).
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
См. man 7 signal для получения дополнительной информации о сигналах и обработка сигналов.
Control+C (управляющий символ intr) отправляет SIGINT, который прерывает приложение. Обычно он прерывается, но это зависит от приложения.
Control+C (управляющий символ intr) отправляет SIGINT, который прерывает приложение. Обычно он прерывается, но это зависит от приложения.
Control+C (управляющий символ intr) отправляет SIGINT, который прерывает приложение. Обычно он прерывается, но это зависит от приложения.
Control+C (управляющий символ intr) отправляет SIGINT, который прерывает приложение. Обычно он прерывается, но это зависит от приложения.