Process-A does not die with Ctrl-C but strace does (this is very strange)
Isso não é nada estranho, strace
não está manipulando o sinal, mas o Process-A está. O sinal que resulta de control + c é enviado para todos os processos no grupo de processos em primeiro plano (a menos que o terminal está em algum outro modo) que, para o caso de teste abaixo, inclui strace
e perl
. strace
sai, mas o processo de ignorar sinal continua a ser executado até ser morto por outros meios.
% strace perl -E '$SIG{INT}="IGNORE";while(1){say $$;sleep 1}'
...
% 9520
9520
9520
kill9520
9520
%
I run grep 'search_string' to make grep wait for input in STDIN. Now I'm unable to close it with Ctrl-C.
Isso aponta para um problema de configuração do shell; grep
provavelmente herdou um manipulador de sinal de um processo pai que, nesse caso, seria seu shell. Eu tenho um script blocksig
que ilustra este caso:
% grep asdf
^C
% blocksig grep asdf
^C^C^C^C^C^]^\zsh: quit blocksig grep asdf
%
No entanto, no seu caso, é o seu shell e não blocksig
, que é o processo pai. O que acontece quando você muda para outro shell ou inicia seu shell sem ler os típicos arquivos rc
? Você tem alguma configuração de trap
ou configuração personalizada de trabalho ou monitoramento de tarefas na sua configuração de shell?