Sophie

Sophie

distrib > Mandriva > 10.0 > i586 > by-pkgid > 48e6004f7274ccc2095a5ab8f2460dd2 > files > 47

mandrake-doc-es-10.0-5.1.100mdk.noarch.rpm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Tuberías anónimas y
   tuberías nombradas</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Guía de Referencia"><link rel="up" href="ext2fs.html" title="Capítulo 9. El sistema de archivos de Linux"><link rel="previous" href="ext2fs-ln.html" title="Los vínculos"><link rel="next" href="ext2fs-special.html" title="Los archivos especiales: modo bloque y
   caracter"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tuberías anónimas y
   tuberías nombradas</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext2fs-ln.html">Anterior</a> </td><th width="60%" align="center">Capítulo 9. El sistema de archivos de Linux</th><td width="20%" align="right"> <a accesskey="n" href="ext2fs-special.html">Siguiente</a></td></tr></table><hr></div><div class="sect1" lang="es"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ext2fs-pipe"></a>Tuberías “<span class="quote">anónimas</span>” y
   tuberías nombradas</h2></div></div><div></div></div><p><a name="BId-ext2fs-pa42"></a>Volvamos al ejemplo de las tuberías, ya
   que es sumamente interesante además de ser una buena ilustración de
   la noción de vínculos. Cuando usa una tubería en una línea de
   comandos, el <tt class="systemitem">shell</tt> crea la tubería por Usted y la opera de
   tal manera que el comando que se encuentra delante de la misma
   escribe en ella, mientras que el comando que se encuentra detrás de
   la misma lee de ella. Todas las tuberías, ya sean
   anónimas<a class="indexterm" name="BId-ext2fs-it18"></a> (como las que usa el
   <tt class="systemitem">shell</tt>) o nombradas<a class="indexterm" name="BId-ext2fs-it19"></a> (ver abajo), funcionan
   según el principio <span class="acronym">FIFO</span> (<span class="foreignphrase"><i class="foreignphrase">First In, First
   Out</i></span>, Primero en Llegar, Primero en Salir). Ya hemos
   visto ejemplos de como usar las tuberías en el <tt class="systemitem">shell</tt>, pero
   tomemos uno en pos de nuestra ilustración:</p><a name="BId-ext2fs-pl4"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ ls -d /proc/[0-9] | head -5
/proc/1/
/proc/2/
/proc/3/
/proc/4/
/proc/5/</pre></td></tr></table><p><a name="BId-ext2fs-pa43"></a>Una cosa que no notará en este ejemplo
   (porque ocurre muy rápido para que uno lo pueda ver) es que las
   escrituras en las tuberías son bloqueantes. Esto significa que
   cuando el comando <span><b class="command">ls</b></span> escribe en la tubería, está
   bloqueado hasta que un proceso del otro lado lea sobre la misma.
   Para poder visualizar el efecto, puede crear tuberías nombradas,
   que al contrario de las usadas por el <tt class="systemitem">shell</tt>, tienen nombres
   (es decir, están vinculadas, mientras que las del <tt class="systemitem">shell</tt> no
   lo están)<sup>[<a name="id2555309" href="#ftn.id2555309">25</a>]</sup>. El comando para crear
   dichas tuberías es <span><b class="command">mkfifo</b></span>:

 <a name="BId-ext2fs-pl5"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ mkfifo un_tubo
$ ls -il
total 0
169 prw-rw-r--    1 reina     reina            0 sep 10 14:12 un_tubo|
#
# Ud. puede ver que el contador de vínculos es 1, y que la salida muestra
# que el archivo es una tubería ('p')
#
# Aquí también puede usar ln:
#
$ ln un_tubo el_mismo_tubo
$ ls -il
total 0
169 prw-rw-r--    2 reina     reina            0 sep 10 15:37 un_tubo|
169 prw-rw-r--    2 reina     reina            0 sep 10 15:37 el_mismo_tubo|
$ ls -d /proc/[0-9] &gt;un_tubo
#
# El proceso está bloqueado, ya que no hay quien lea en el otro extremo.
# Teclee C-z para suspender el proceso...
#
bash: 3452 suspended  ls -d /proc/[0-9] &gt; un_tubo
#
# ...Luego póngalo en 2do. plano:
#
$ bg
[1]  + continued  ls -d /proc/[0-9] &gt; un_tubo
#
# ahora lea del tubo...
#
$ head -5 &lt;el_mismo_tubo
#
# ...el proceso que escribe termina
#
[1]  + 3452 done       ls -d /proc/[0-9] &gt; un_tubo
/proc/1/
/proc/2/
/proc/3/
/proc/4/
/proc/5/
#</pre></td></tr></table><p>

  Similarmente, también las lecturas son bloqueantes. Si ejecutamos
  los comandos anteriores en orden inverso, observaremos que
  <span><b class="command">head</b></span> se bloquea, esperando que algún proceso le
  de algo para leer:

<a name="BId-ext2fs-pl6"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ head -5 &lt;un_tubo
#
# El programa se bloquea, suspenderlo: C-z
#
bash: 741 suspended  head -5 &lt; un_tubo
#
# Ponerlo en segundo plano...
#
$bg
[1]  + continued  head -5 &lt; un_tubo
#
# ...Y darle algo de comer :)
#
$ ls -d /proc/[0-9] &gt;el_mismo_tubo
$ /proc/1/
/proc/2/
/proc/3/
/proc/4/
/proc/5/
[1]  + 741 done       head -5 &lt; un_tubo
$</pre></td></tr></table><p>
  
  En el ejemplo previo también se puede ver un efecto no deseado: el
  comando <span><b class="command">ls</b></span> terminó antes que el comando
  <span><b class="command">head</b></span> tomara el relevo. La consecuencia es que
  Usted volvió al prompt inmediatamente, pero <span><b class="command">head</b></span>
  sólo se ejecutará después. Por lo tanto sólo efectuó su salida
  después que Usted volvió al prompt.</p><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2555309" href="#id2555309">25</a>] </sup>Existen otras diferencias
   entre los dos tipos de tuberías, pero las mismas están fuera del
   alcance de este libro.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext2fs-ln.html">Anterior</a> </td><td width="20%" align="center"><a accesskey="u" href="ext2fs.html">Subir</a></td><td width="40%" align="right"> <a accesskey="n" href="ext2fs-special.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Los vínculos </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> Los archivos especiales: modo bloque y
   caracter</td></tr></table></div></body></html>