On Sat, 24 Jun 2006 8:50pm  -0300, Gilberto Martins wrote:

> Olá Felipe.
> 
> Achei interessante o teu texto, mas não entendi se vc quis dizer que :
> a) FIFOs têm uma característica chamada de "bloqueante"

Uma leitura/escrita, em UNIX, em um FIFO, faz o processo que está 
executando a operação bloquear. Faça um teste assim:

  % mkfifo teste
  % cat teste

O cat vai ser bloqueado até que exista alguém para escrever. E iria 
acontecer o mesmo caso fosse o contrário:

  % mkfifo teste
  % print palavra > teste

O shell vai ser bloqueado ("travado" por causar uma outra impressão) até 
que tenha alguém para ler. Obviamente, existe a opção de leitura ou 
escrita não bloqueante. Fiz este suporte na bash há um tempo. Assim tu vai 
tentar ler. Se tiver alguma coisa, ótimo. Se não tiver, fica sabendo que 
não tinha nada e segue. O mesmo para escrita. Se tinha alguém para ler, a 
escrita é feita. Se não tinha, continua normal. Enviei para a lista há um 
tempo o patch, eu acho. Se não achar, pode pedir que eu envio mais 
informações sobre o assunto.


> b) FIFOs realmente podem provocar travamentos ?
> 

Podem, como mostrei nos exemplos. Na zsh existe o zsh/select, que torna 
possível o shell fazer um select(2) (uma chamada de sistema que verifica 
se existe dado pronto para ser consumido, ou se existe consumidor, etc).

Eu acredito que a melhor referência sobre o assunto sejam os livros do 
próprio Tanenbaum, do Stevens ou do Silberschatz, ambos de sistemas. Os 
livros deles têm tradução para português.

-- 
Felipe Kellermann


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a