[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: [shell-script] lance estranho
From: |
aurelio |
Subject: |
Re: RES: [shell-script] lance estranho |
Date: |
Thu, 20 Mar 2003 14:54:23 -0300 (ART) |
grande jose!
obrigado por iluminar nossas mentes!
realmente show a explicação!
eu também recebi a explicação do Fabio Olivé,
amigão de Conectiva que disse a mesma coisa mas com
outras palavras. Só vou colar aqui pra reforçar blz?
> De: Fábio Olivé Leite <address@hidden>
> Para: address@hidden
>
> Olá!
> Fala Aurélio! Um mail teu apareceu aqui no GULP e me senti obrigado
> a analisar como é que o bichinho funciona. :)
>
> (rm -f lixo ; sed 's/^/---/' > lixo) < lixo
>
> Mas bah! E o pior é que é muito bem pensado mesmo! Vejamos:
>
> A construção "(comando)" no bash faz com que "comando" seja executado
> em um subshell. Este é outro processo que precisa ser iniciado e
> escalonado. Já o redirecionamento de entrada desse subshell será
> feito no próprio shell onde o comando foi digitado, antes do subshell
> ser iniciado.
>
> Sendo assim o inode do arquivo "lixo" vai estar aberto e plugado na
> entrada do subshell antes de ele começar a executar os comandos.
> Quando ele começa a executar, ele remove o arquivo, mas isso apenas
> retira o nome dele do diretório, pois ainda existe uma referência ao
> inode (a entrada do subshell) e seu conteúdo só será removido do
> disco quando o subshell terminar e fechar o inode da entrada.
>
> O subshell então roda o sed redirecionando sua saída para um novo
> arquivo "lixo" (novo pois agora não existe no diretório), que pega
> outro inode, e tudo funciona como deveria.
>
> Isto não funciona no cygwin porque os windão não possuem o mesmo
> esquema de inodes e contagem de referências aos inodes que os unixes.
>
> Quando o rm rodar, o arquivo que seria lido pelo subshell vai pro
> saco, junto com seu conteúdo.
=====
--
aurelio
_______________________________________________________________________
Busca Yahoo!
O serviço de busca mais completo da Internet. O que você pensar o Yahoo!
encontra.
http://br.busca.yahoo.com/