Casa > O > O Que São Sigpipe?

O que são SIGPIPE?

SIGPIPE é o sinal de "tubo quebrado", que é enviado para um processo quando tenta escrever em um tubo cujo fim de leitura foi fechado (ou quando tenta escrever em um soquete que não está mais aberto para leitura), mas não o inverso. A ação padrão é terminar o processo.

Este comportamento é útil para casos típicos de processos em execução em pipelines. Se você rodar foo | bar, então você nunca poderá ver a saída de foo diretamente--- torna-se a entrada para bar e você verá a saída do bar. Isto significa que se, por exemplo, o bar morre, então não faz sentido o foo continuar a produzir a saída. Isto pode acontecer ou porque o bar falhou, ou porque não precisa mais de input (por exemplo, se ele está escaneando seu input para ter certeza que não há erros, ele pode parar depois de encontrar o primeiro).

Imagine o que aconteceria se o SIGPIPE não existisse, e o bar morreu (seja por causa de um erro ou porque ele simplesmente decidiu sair). foo continuaria rodando, e ele teria que receber um código de erro ao tentar escrever. Ele poderia ignorar isso e continuar rodando, deixando o usuário sem nenhuma indicação óbvia de que a possível condição anormal de terminar a barra primeiro tenha ocorrido. Quando foo é morto pelo SIGPIPE, a shell irá detectar isso usando uma das funções de espera(), e imprimir uma mensagem "Broken pipe" ou similar.

Por outro lado, se foo morre primeiro, este é o caso usual; ele fecha a extremidade de escrita, e então o bar irá simplesmente alcançar a EOF, e terminar normalmente.

De Karlee

Há alguma forma de estabelecer um alerta de preços na Amazon? :: Como ver pornografia após uma proibição de pornografia na Índia