


Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Neste artigo, júlio cezar neves explica o que são named pipes (fifo) em shell script e como eles podem ser utilizados para sincronizar processos e fazer bloqueio em arquivos para evitar perda/corrupção de dados devido a atualizações simultâneas. Ele também mostra exemplos práticos de como usar named pipes para esses propósitos.
Tipologia: Notas de estudo
1 / 4
Esta página não é visível na pré-visualização
Não perca as partes importantes!



Dando nomes aos canos
$ ls -l pipe prw-r-r-- 1 julio dipao 0 Jan 22 23:11 pipe1|
A conversa está boa, mas uma hora eles tem que sair do bar. Na última parte do nosso papo, falamos sobre pipes e sincronização entre processos. por Júlio Cezar Neves Curso de Shell Script
Dave Hamilton - www.sxc.hu Listagem 1: tamtela.sh 01 #!/bin/bash 02 # 03 # Coloca no centro da tela, em video reverso, 04 # a quantidade de colunas e linhas 05 # quando o tamanho da tela eh alterado. 06 # 07 trap Muda 28 # 28 = sinal gerado pela mudanca no tamanho 08 # da tela e Muda eh a funcao que fara isso. 09 10 Bold=$(tput bold) # Modo de enfase 11 Rev=$(tput rev) # Modo de video reverso 12 Norm=$(tput sgr0) # Restaura a tela ao padrao default 13 14 Muda () 15 { 16 clear 17 Cols=$(tput cols) 18 Lins=$(tput lines) 19 tput cup $(($Lins / 2)) $(((Cols - 7) / 2)) # Centro da tela 20 echo $Bold$Rev$Cols X $Lins$Norm 21 } 22 23 clear 24 read -n1 -p "Mude o tamanho da tela ou tecle algo para terminar " Linux User 86 Papo de Botequim agosto 2005 edição 11
$ mkfifo pipe
$ ls -l > pipe
$ cat < pipe
Sincronização de processos
for Arq in BigFile1 BigFile2 BigFile do if sort $Arq then Manda=va else Manda=pare break fi done echo $Manda > pipe [ $Manda = pare ] && { echo Erro durante a classificação dos arquivos exit 1 } …
OK=cat pipe1 if [ $OK = va ] then … Rotina de impressão Tabela 1 Programa1 Programa Bloco 1 Rotina de classificação de três grandes arquivos^ Rotina de abertura e geração de menus Bloco 2 Acertos finais e encerramento^ Impressão dos dados classificados pelo programa 1 agosto 2005 edição 11 87 Papo de Botequim (^) Linux User
$ ls -l >(cat) l-wx–– 1 jneves jneves 64 Aug 27 12:26 /dev/fd/63 -> pipe:[7050]
$ cmp <(cat dir/) <(cat dir.bkp/) || echo backup furado
$ cmp <(cat dir/) <(cat dir.bkp/) >/dev/null || echo backup furado
while read arq do ((i++)) # assim nao eh necessario inicializar i echo "$i: $arq" done < <(ls) echo "No diretorio corrente (pwd) existem $i arquivos"
ls | while read arq do ((i++)) # assim nao eh necessario inicializar i echo "$i: $arq" done echo "No diretorio corrente (pwd) existem $i arquivos"
#!/bin/bash LIST="" # Criada no shell principal ls | while read FILE # Inicio do subshell do LIST="$FILE $LIST" # Alterada dentro do subshell done # Fim do subshell echo $LIST
$ ls | ln
$ cat -n <(ls)
$ comm <(sort arq1) <(sort arq2)
$ sort arq1 > /tmp/sort $ sort arq2 > /tmp/sort $ comm /tmp/sort1 /tmp/sort $ rm -f /tmp/sort1 /tmp/sort
agosto 2005 edição 11 89 Papo de Botequim (^) Linux User