shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Estrutura de script para criar fila de espera


From: Julio C. Neves
Subject: Re: [shell-script] Re: Estrutura de script para criar fila de espera
Date: Sun, 20 Sep 2015 11:49:51 -0300

Mas Itamar,
não me lembro mais do que tinha na 5æ edição, mas olharei na 10ª e se não estiver claro corrigirei. O name pipe ou FIFO, enfileira a *entrada*. Assim se vc colocar no terminal 1: echo terminal 1 > pipe1; no terminal 2: echo terminal 2 > pipe1 e no terminal 3: cat pipe1, a resposta sairá na ordem em que foi enfileirada. Pelo menos é isso que se espera, ou então é bug.

Ou seja, até onde eu saiba, ele cumpre o seu papel que é enfileirar as entradas.

Mas já que voltei a esse tema, uma outra saída possível seria disparar os processos em background e pegar seu PID (pid=$(echo $!)) e a cada vez que receber o sinal 17 (montado com um trap), verificar se aquele PID ainda está na pilha de execução (ps aux | grep "\<$pid\>"). O sinal 17 é gerado cada vez que termina um processo filho do que o gerou.



Abcs,
Julio
@juliobash

P
róximos cursos de Shell
Cidade         Local Período
São Paulo 4Linux 21/09 a 25/09
São Paulo 4Linux 07/12 a 11/12
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.

Se vc ainda usa Windows e não gosta de malwares, baixe o
LibreOffice somente em https://pt-br.libreoffice.org/


Em 18 de setembro de 2015 12:15, address@hidden [shell-script] <address@hidden> escreveu:
 

atfreitas


Confesso que meu entendimento para "named pipe", começou com a leitura da 5ª Edição de Programação Shell Linux, livro do mestre Julio Cezar Neves. Digo isso apenas para situar os limites do meu entendimento ao assunto.

Então sob esse ótica, mesmo o uso de "named pipe" iria conectar dois processos em sequência, mesmo que não se use exatamente a saída de um como entrada de outro.
O que entendi é que haveria um processo "tagarela" para alimentar o FIFO e outro "ouvinte" aguardando o conteúdo.

Seguindo na época o exemplo do livro, criei em 3 terminais diferente os seguintes comandos, após criar uma "named pipe": $ mkfifo pipe1

Terminal 1: $ cat < pipe1
Terminal 2: $ cat < pipe1
Terminal 3: $ ls -l > pipe1

O que ocorreu é que tive retorno do Terminal 3 sendo exibido no Terminal 1 e liberando ambos.
O Terminal 2 foi liberado, sem exibir nada.

O que deduzo, nesse contexto, é que havendo três ou mais instâncias concorrentes pode não haver essa trava adequadamente e não ser sequencial os processos.

Não sei se fiz a conclusão correta ou não explorei mais amplamente as possibilidade no uso de "named pipe", mas tenho a impressão que existe esse limite.
É isso mesmo? O meu raciocínio está falho? Se for isso, agradeço se me apontar a falha e me corrigir.

Valeu pela nova visão do assunto.

[]'s
Itamar



reply via email to

[Prev in Thread] Current Thread [Next in Thread]