ksh
, como o shell Bourne ou yash
, quando o não interativo aguarda apenas o comando mais à direita no pipeline. Você notará que:
ksh -c 'sleep 1 | true'
retorna imediatamente para lá.
No seu caso, às vezes, o pai já passou quando A
começa e faz um getppid()
para preencher a variável $PPID
, e você obtém o pid de init
ou o subpasme filho que adotou o processo depois que seu pai morreu.
Não é um bug. É por escolha. Fazê-lo dessa maneira, em vez de esperar que cada componente de pipeline tenha suas vantagens (como algum desempenho aprimorado na maioria das situações) e inconvenientes como comportamento inesperado como este ou se os comandos no lado esquerdo do pipeline produzirem resultados que o próximo comando no pipeline script fazer uso de.