LINUX.ORG.RU

История изменений

Исправление Shushundr, (текущая версия) :

Вот, да, супер.

Я забыл (не вспомнил, не знал), что консольная утилита должна ещё обрабатывать сигналы.

Консольная утилита должна корректно обрабатывать сигналы Linux, такие как SIGINT (Ctrl+C), SIGQUIT (Ctrl+) и другие. Обработка сигналов может включать в себя временное прерывание работы утилиты, завершение процесса или выполнение определённых действий перед завершением. Утилита может обрабатывать сигналы с помощью команды trap, которая позволяет задать код обработки сигнала и список сигналов, разделённых пробелами.

Утилита dd обрабатывает сигналы SIGINT и SIGQUIT.

#include <signal.h>

void sigint_handler(int sig) {
    // корректно завершить работу и сохранить данные
    exit(0);
}

int main() {
    signal(SIGINT, sigint_handler);
    // ...
}

Исправление Shushundr, :

Вот, да, супер.

Я забыл (не вспомнил, не знал), что консольная утилита должна ещё обрабатывать сигналы.

Консольная утилита должна корректно обрабатывать сигналы Linux, такие как SIGINT (Ctrl+C), SIGQUIT (Ctrl+) и другие. Обработка сигналов может включать в себя временное прерывание работы утилиты, завершение процесса или выполнение определённых действий перед завершением. Утилита может обрабатывать сигналы с помощью команды trap, которая позволяет задать код обработки сигнала и список сигналов, разделённых пробелами.

Утилита dd обрабатывает сигналы SIGINT и SIGQUIT.

Исходная версия Shushundr, :

Вот, да, супер.

Я забыл (не вспомнил, не знал), что консольная утилита должна ещё обрабатывать сигналы.