ctrl + c nunca mata um programa,
Isso não é o que faz.
Há um conjunto de sinais que o padrão POSIX define, estes são usados para controlar um programa em execução.
First the signals described in the original POSIX.1-1990 standard.
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
SIGTERM 15 Term Termination signal
- link
ctrl + c envia o sinal 2
, "Interromper do teclado" para o programa que você executou de um terminal.
É inteiramente até o programa para lidar com esse sinal, ele pode fazer o que quiser sobre isso. Muitos intérpretes de linguagem de script podem lidar com isso de forma padrão, matando o script chamado e saindo normalmente.
Se você quiser que um programa saia, espeicamente de um contexto automático, o singal 15 é recomendado, o programa kill
pode ser usado para enviar sinais para um processo por id (pid).
kill -15 <pid>
Tanto quanto eu saiba, o programa ainda recebe este sinal, e deve terminar o mais rápido possível assim que possível.
Se o programa ignora o sinal 15, E o programa persiste para viver (e você não está deixando de enviar o sinal devido a um erro de permissão)
kill -9 <pid>
O sinal 9, até onde eu sei, é interpretado pelo kernel (o gerenciador de tarefas e a interface de hardware). O kernel pára abruptamente o processamento do programa e des-aloca / libera todos os seus recursos.