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 .