Ctrl + D , quando digitado no início de uma linha em um terminal, significa o final da entrada. Este não é um sinal no sentido unix: quando um aplicativo está lendo do terminal e o usuário pressiona Ctrl + D , o aplicativo é notificado de que o final do arquivo foi atingido (como se estivesse lendo um arquivo e tivesse passado o último byte).
Ctrl + C envia um sinal, SIGINT . Por padrão, o SIGINT (o sinal de interrupção) mata o aplicativo em primeiro plano, mas o aplicativo pode capturar o sinal e reagir de alguma maneira diferente (por exemplo, o próprio shell captura o sinal e aborta a linha que você começou a digitar, mas não t sair, mostra um novo prompt e aguarda por uma nova linha de comando).
Você pode alterar os caracteres associados ao fim do arquivo e ao SIGINT com as stty
comando, por exemplo stty eof a
tornaria a
o caractere de fim de arquivo e stty intr ^-
desabilitaria o caractere SIGINT. Isso raramente é útil.