<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Los vínculos</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="ch09s02.html" title="Todo es un archivo"><link rel="next" href="ext2fs-pipe.html" title="Tuberías anónimas y tuberías nombradas"></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">Los vínculos</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch09s02.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-pipe.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-ln"></a>Los vínculos</h2></div></div><div></div></div><p><a name="BId-ext2fs-pa30"></a> <a class="indexterm" name="BId-ext2fs-it17"></a> La mejor forma de comprender qué hay detrás de esta noción de vínculo es por medio de un ejemplo. Creemos un archivo (regular):</p><a name="BId-ext2fs-pl1"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ pwd /home/reina/ejemplo $ ls $ touch a $ ls -il a 32555 -rw-rw-r-- 1 reina reina 0 sep 10 08:12 a</pre></td></tr></table><p><a name="BId-ext2fs-pa31"></a>La opción <tt class="option">-i</tt> del comando <span><b class="command">ls</b></span> imprime el número de inodo, que es el primer campo de la salida. Como puede ver, antes de crear el archivo <tt class="filename">a</tt>, no había archivo alguno en el directorio. El otro campo de interés es el tercero, que es el contador de vínculos del archivo (bueno, de hecho, del inodo).</p><p><a name="BId-ext2fs-pa32"></a>El comando <span><b class="command">touch a</b></span> puede separarse en dos acciones distintas:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-ext2fs-pa33"></a>la creación de un inodo, al cual el sistema le atribuyó el número 32555, y cuyo tipo es el de un archivo regular;</p></li><li><p><a name="BId-ext2fs-pa34"></a>la creación de un vínculo a este inodo, llamado <tt class="filename">a</tt>, en el directorio corriente, <tt class="filename">/home/reina/ejemplo</tt>. Por lo tanto, el archivo <tt class="filename">/home/reina/ejemplo/a</tt> es un vínculo al inodo numerado 32555, y por el momento es sólo uno: el contador de vínculos muestra un 1.</p></li></ul></div><p><a name="BId-ext2fs-pa35"></a>Pero ahora, si ingresamos:</p><a name="BId-ext2fs-pl2"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ ln a b $ ls -il a b 32555 -rw-rw-r-- 2 reina reina 0 sep 10 08:12 a 32555 -rw-rw-r-- 2 reina reina 0 sep 10 08:12 b $</pre></td></tr></table><p><a name="BId-ext2fs-pa36"></a>habremos creado otro vínculo al mismo inodo. Como puede ver, no hemos creado archivo alguno denominado <tt class="filename">b</tt>, sino que sólo hemos agregado otro vínculo al inodo numerado 32555 en el mismo directorio y lo denominamos <tt class="filename">b</tt>. Puede ver en la salida de <span><b class="command">ls -il</b></span> que el contador de vínculos para el inodo ahora es 2, y ya no es 1.</p><p><a name="BId-ext2fs-pa37"></a>Ahora, si hacemos:</p><a name="BId-ext2fs-pl3"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ rm a $ ls -il b 32555 -rw-rw-r-- 1 reina reina 0 sep 10 08:12 b $</pre></td></tr></table><p><a name="BId-ext2fs-pa38"></a>vemos que incluso cuando hemos borrado el “<span class="quote">archivo original</span>”, el inodo todavía existe. Pero ahora el único vínculo a él es el archivo denominado <tt class="filename">/home/reina/ejemplo/b</tt>.</p><p><a name="BId-ext2fs-pa39"></a>Por lo tanto, bajo <span class="application">UNIX</span> un archivo no tiene nombre alguno; en su lugar, tiene uno o más <a name="BId-ext2fs-gt10" href="glossary.html#term-link"><i class="glossterm">vínculo</i></a>s en uno o más directorios.</p><p><a name="BId-ext2fs-pa40"></a>También los directorios se almacenan en inodos, pero su contador de vínculos, contrariamente a todos los otros tipos de archivos, es el número de subdirectorios que contiene. Existen al menos dos vínculos por directorio: el directorio en sí mismo (<tt class="filename">.</tt>) y su directorio padre (<tt class="filename">..</tt>).</p><p><a name="BId-ext2fs-pa41"></a>Ejemplos típicos de archivos que no están vinculados (es decir, no tienen nombre) son las conexiones de red; Usted nunca verá el archivo correspondiente a su conexión con <a href="http://www.mandrakelinux.com/" target="_top">el sitio web de <span class="application">Mandrakelinux</span></a> en su árbol de archivos, sin importar que directorio intente. Similarmente, cuando usa una <a name="BId-ext2fs-gt11" href="glossary.html#term-pipe"><i class="glossterm">tubería</i></a> en el <tt class="systemitem">shell</tt>, el inodo que corresponde a la misma existe, pero no está vinculado. Otro uso de los inodos sin nombre es en los archivos temporales. Usted crea un archivo temporal, y luego lo elimina. El archivo existe mientras está abierto, pero nadie lo puede abrir (ya que no hay nombre por el cual abrirlo). De esta forma, si la aplicación falla, el archivo temporal se elimina automáticamente.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch09s02.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-pipe.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Todo es un archivo </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> Tuberías anónimas y tuberías nombradas</td></tr></table></div></body></html>