O teste não é um simples teste "o comando foi bem-sucedido". Quando um processo sai com SIGINT, seu status de saída pode ser lido por wait(2) . Usando WIFSIGNALED e WTERMSIG , o bash pode dizer se o processo filho (neste caso, o sudo) foi morto diretamente pelo sinal ou não.
Veja o resultado da chamada do sistema ao pressionar Ctrl + C em cat (de acordo com strace ):
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGINT}], 0, NULL) = 9357
E aqui está o resultado ao pressionar Ctrl + C em sudo -S sleep 4 :
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 9479
Apenas para completar, aqui está o resultado de Ctrl + C'ing ping localhost :
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 9710