Um EOF
não é realmente "enviado". É um evento em que seu processo chama a chamada de sistema read
e retorna 0
, que para pipes ocorre quando a outra extremidade do canal foi fechada (por todos os processos que a possuem, se o filedescriptor foi duplicado).
O kernel sempre fechará todos filedescriptors nos processos de término.
Não há maneira de contornar (até mesmo os textos dos processos do SIGKILL são fechados). Se algum desses filodescriptors for uma última referência a um fim de gravação de filedescriptor de pipe, o próximo read
na extremidade de leitura correspondente retornará 0, que stdio
interpretará como EOF
.