Ordem dos sinais: SIGPOLL e SIGCHLD

0

Eu gero um processo filho e me conecto a ele com um pipe.

Eu configurei o pipe para enviar SIGPOLL nos dados disponíveis por fcntl I_SETSIG .

O filho envia alguns dados pelo canal e termina.

Posso ter certeza de que SIGPOLL será recebido antes de SIGCHLD ? (ou nessa situação eu recebo apenas SIGCHLD sem SIGPOLL ? Se eu receber os dois sinais, posso ter certeza sobre o pedido deles?)

Eu uso o Perl no FreeBSD, mas esta questão se estende a todas as plataformas Unix.

    
por porton 16.07.2016 / 15:51

1 resposta

3

Este design tem condições de corrida escritas por todo o lado. Você não pode ter certeza de que os sinais serão entregues em ordem, ou mesmo de todo. Se você estiver usando o Perl, isso o torna duplamente incerto.

Recrie para que haja alguma confirmação de pai para filho de que os dados foram recebidos. A ordem e o número de entrega do sinal não são confiáveis. Pedir uma solução portátil é ainda mais inútil.

    
por 16.07.2016 / 17:52