viernes, 5 de marzo de 2010

LINK y SYMLINK (Erika Gladys)

LINK

Su objetivo permitir que el mismo archivo aparezca con varios nombres distintos en distintos directorios. Puede ser util para compartir archivos. Es diferente a hacer una copia del archivo.
Sintaxis:
#include
int link(const char *oldpath, const char *newpath);

Uso:
link("/usr/ejemplo.txt","/usr/ejemplo.ln");

La forma en que funciona, es creando ligas duras o fisicas a un archivo, lo que significa, que creará otra relación (inodo,nombre), pero con el inodo identico al del archivo referenciado, esto implica que tendrá los mismos permisos y atributos de archivo puesto que se trata del mismo.
Esto provoca, que en caso de eliminar al archivo original, se pueda seguir teniendo acceso a el, ya que solo se eliminaría una de sus referencias a el, pero aun existen las referencias creadas como ligas duras. Por lo tanto, para eliminar permanentemente el acceso a este archivo, es necesario, borrar todas las referencias a el.

Aplicación:
#include
int main()
{
link("/home/ejemplo.txt",''/home/ejemplo.ln');
}
El pequeño programa anterior creará, una liga dura al archivo ejemplo.txt, es decir, una nueva referencia al mismo inodo.

ERRORES:
EACCES permisos de escritura en ruta vieja o nueva, es decir en liga o archivo original
EEXIST la ruta que se desea crear ya existe.
EFAULT Apuntadores fuera del espacio de direcciones
EIO Error de entrada salida.
ELOOP Muchas ligas simbolicas para el mismo elemento.
EMLINK Arichivo referenciado rebasa maximo de ligas establecido.
ENAMETOOLONG Ruta muy larga
ENOENT Algun elemento dentro del directorio referenciado no existe
ENOMEM Memoria de kernel insuficciente
ENOSPC El dispositivo que contiene la liga y el archivo original no tiene espacio suficiente.
ENOTDIR Algun componente usado como directorio, no es un directorio.
EPERM Ruta original es un directorio
EPERM El sistema de archivos sobre el cual se encuentra el archivo original, no soporta creacion de links.
EROFS El archivo es de solo lectura.
EXDEV Liga y archivo original no se encuantran en el mismo sistema de archivos.









SYMLINK
Llamada al sistema que crea una liga simbolica a un archivo.
Sintaxis:
#include
int symlink(const char *oldpath, const char *newpath);

USO:
symlink("/home/ejemplo.txt",''/home/ejemplo.ln');

Un enlace simbolico representa un archivo que contiene el nombre de otro archivo. Este enlace simbolico tiene distiinto inodo que el enlace físico del archivo o llamandolo de otra forma, su dirección original[directa].
Cuando se representa un enlace simbolico, el inodo correspondiente, contienen una marca que indica que el archivo representa un link, por lo que el sistema operativo sabe que ese archivo solo almacenará el nombre de otro archivo.
En caso de eliminar el archivo orriginal, la liga suave o simbolica, no tendrá a donde apuntar por lo que se produce un error al intentar tener acceso a el.

Aplicación:
#include
int main()
{
symlink("/home/ejemplo.txt",''/home/ejemplo.ln');
}
Este ejemplo, creará una liga simbolica al archivo ejemplo.txt.

ERRORES:
EACCES permisos de escritura en ruta vieja o nueva, es decir en liga o archivo original
EEXIST la ruta que se desea crear ya existe.
EFAULT Apuntadores fuera del espacio de direcciones
EIO Error de entrada salida.
ELOOP Muchas ligas simbolicas para el mismo elemento.
ENAMETOOLONG Ruta muy larga
ENOENT Algun elemento dentro del directorio referenciado no existe
ENOMEM Memoria de kernel insuficciente
ENOSPC El dispositivo que contiene la liga y el archivo original no tiene espacio suficiente.
ENOTDIR Algun componente usado como directorio, no es un directorio.
EPERM Ruta original es un directorio
EPERM El sistema de archivos sobre el cual se encuentra el archivo original, no soporta creacion de links.
EROFS El archivo es de solo lectura.

Relacionado con estas, se encuentra la llamada al sistema

UNLINK:
Esta permite eliminar las referencias a un archivo.
La sintaxis es
unlink("/home/ejemplo.ln");

No hay comentarios:

Publicar un comentario