Рубрики

Напишите программу на C, которая не завершается при нажатии Ctrl + C

Напишите программу на C, которая не завершается при нажатии Ctrl + C. Он печатает сообщение «Невозможно завершить с помощью Ctrl + c» и продолжает выполнение.

Для этого мы можем использовать обработку сигналов в Си . При нажатии Ctrl + C генерируется сигнал SIGINT, мы можем перехватить этот сигнал и запустить наш определенный обработчик сигнала. Стандарт C определяет следующие 6 сигналов в заголовочном файле signal.h.

SIGABRT — ненормальное завершение.
SIGFPE — исключение с плавающей точкой.
SIGILL — неверная инструкция.
SIGINT — интерактивный запрос внимания, отправляемый в программу.
SIGSEGV — неверный доступ к памяти.
SIGTERM — запрос на завершение программы.

Дополнительные сигналы указываются Unix и Unix-подобные операционные системы (например, Linux) определяют более 15 дополнительных сигналов. Смотрите http://en.wikipedia.org/wiki/ Unix_signal # POSIX_signals
Стандартный сигнал функции библиотеки C () можно использовать для настройки обработчика для любого из вышеуказанных сигналов.

/ * Программа AC, которая не завершается при нажатии Ctrl + C * /
#include <stdio.h>
#include <signal.h>

  
/ * Обработчик сигналов для SIGINT * /

void sigintHandler(int sig_num)

{

    / * Сбросить обработчик, чтобы поймать SIGINT в следующий раз.

       См. Http://en.cppreference.com/w/c/program/signal * /

    signal(SIGINT, sigintHandler);

    printf("\n Cannot be terminated using Ctrl+C \n");

    fflush(stdout);

}

  

int main ()

{

    / * Установить обработчик сигнала SIGINT (Ctrl-C) в sigintHandler

       См. Http://en.cppreference.com/w/c/program/signal * /

    signal(SIGINT, sigintHandler);

  

    /* Бесконечная петля */

    while(1)

    {        

    }

    return 0;

}

Вывод: когда Ctrl + C был нажат два раза

 
 Cannot be terminated using Ctrl+C
 
 Cannot be terminated using Ctrl+C

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Напишите программу на C, которая не завершается при нажатии Ctrl + C

0.00 (0%) 0 votes