Qual processo é morto quando eu faço `ctrl + c`?


2

Minha compreensão vaga e intuitiva é que Ctrl+ Cmata o processo que está sendo executado atualmente na janela selecionada.

Eu estou ficando confuso, embora tipicamente sobre a diferença de qual processo é morto quando um executável é chamado e quando um interpretador é usado.

Intérprete

Quando eu uso um intérprete . Por exemplo, se eu abrir Rno terminal, posso ver um processo que CMD(na chamada de ps) é R. Quando eu uso Ctrl+ Cno entanto, o Rprocesso não é morto, mas o processo em execução Ré morto.

Executável

Quando eu chamo um exectuable, posso ver um processo que CMD(na chamada de ps) é <nameOfExecutable>. Quando eu faço Ctrl+ C, esse processo é morto.

Questão

Parece haver algum tipo de hierarquia de processos (e pode haver uma semântica correta para se referir a ela). O que o Ctrl+ faz Cexatamente à luz dessa aparente hierarquia de processos?


Para sua informação, eu uso o Terminal 2.6.1 no Mac OS X 10.11.3


1
Resposta relacionada: stackoverflow.com/a/6110213/1025421 // Observe também que SIGINTnão é SIGKILL, portanto, o processo não é "morto".
Daniel B

Respostas:


1

Não tenho certeza, mas ctrl + cdevo enviar SIGINTsinal para o processo em execução. Normalmente, os programas não possuem um manipulador personalizado para esse sinal e a ação padrão é executada (o programa é eliminado). Eu estou supondo que o intérprete intercepta este sinal e simplesmente pára de executar o script em execução.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.