Función readlink c

Función readlink c

La función readLink () del lenguaje de programación C se utiliza para insertar la información del enlace simbólico, que se refiere a alguna ruta, en el búfer. Leer el contenido de un enlace simbólico se conoce como "leer un enlace" o "readlink". El contenido restante del búfer se dejan indeterminados si la longitud de los bytes del enlace simbólico es menor que el buffer_size. En este artículo, discutiremos algunos ejemplos para ilustrar el funcionamiento de la función Readlink C en el sistema Kali Linux. La sintaxis de la función readlink se da de la siguiente manera:

La función readlink () se encuentra en el archivo de encabezado . Este archivo de encabezado debe incluirse por encima de la función principal en el archivo de código. El búfer no contiene un carácter nulo después del resultado.

#incluir
  • ssize_t readlink (const char *restringir link_nombre de ruta, Char *restringir buffer,
      • size_t tamaño del búfer);

El valor del enlace simbólico se acorta para caber en el búfer si es demasiado corto para mantenerlo en su totalidad (buffer_size). Los bytes de tamaño del búfer inicial se deben agregar al búfer en caso de que el argumento del búfer no sea lo suficientemente grande como para contener el contenido de enlace. Si el tamaño del búfer es mayor que el tamaño máximo, el resultado está definido por la implementación. El número de bytes cargados en el búfer se devolverá si readlink () se ejecuta correctamente. De lo contrario, debe devolver -1 y establecer errno para identificar el error exacto y dejar el búfer sin modificar. Aquí está la lista de descripciones de errores junto con el código:

  • Einval: No hay un enlace simbólico en el archivo con nombre.
  • EIO: La lectura del sistema de archivos dio como resultado un error de entrada o salida.
  • Eacces: Un elemento del prefijo de ruta no tiene permiso de búsqueda.
  • Eleop: En enlaces simbólicos, hay un bucle. Al resolver el argumento de la ruta, este error se plantea si se encuentran más que Posix Symloop Symbolic Links.
  • Enoent: No existe tal archivo como el enlace nombrado.

Evaluemos la función readlink () en algunos ejemplos. Cree un archivo de programación C en el terminal de Linux usando el editor VIM. Puede usar Nano o cualquier otro editor para crear el archivo.

Todos los archivos de encabezado se incluyen en el código a continuación antes de la función principal. En la primera línea del bloque principal, se declara la estructura "estadística". Después de eso, se declara un puntero del tipo de personaje, que luego se usa en la función readlink (). Estamos utilizando ssize_t en lugar de un tipo de datos enteros. Es un tipo firmado. Sus valores máximos están vinculados a si el sistema operativo es de 32 o 64 bits. Hemos declarado dos variables de este tipo de datos: buffer_size y nbytes (número de bytes).

En la siguiente línea de código, verificamos el número de argumentos suministrados desde la línea de comando a la función principal. Si esto no es igual a 2, entonces el programa sale de la función principal utilizando la función de salida, que también muestra un mensaje de error. La ubicación de la memoria a la que se hace referencia por Buffer es donde la información de estado para un archivo determinado se almacena después de ser obtenida por la función LSTAT (). Si el nombre del archivo es el enlace simbólico, esta función devuelve los detalles sobre el enlace simbólico en sí. La información devuelta por la función LSTAT es en forma de una estructura de estadísticas, a la que se hace referencia un búfer.

Los datos de estado para un archivo determinado son recopilados mediante la función LSTAT () y se colocan en la dirección de memoria apuntada por el búfer. Este método ofrece información sobre el enlace simbólico en sí mismo si el nombre del archivo es el enlace simbólico. Los datos que devuelve la función LSTAT es en forma de estructura de estadísticas. Hemos aumentado el tamaño del búfer en uno.

En algunos casos, el tamaño informado es cero, devuelto por el enlace simbólico. En esa situación, establezca el tamaño del búfer en el valor Path_max. Establezca el búfer usando la asignación de memoria, que usa el buffer_size. Compruebe si el búfer es nulo, luego muestre un mensaje de error. Llame a la función readlink y pase la ruta del enlace de lectura, buffer y buffer_size a esta función. La función devuelve cuántos bytes se devolvieron en el camino. Si el número de bytes es -1, muestre el error, de lo contrario, muestre la ubicación del punto del archivo vinculado. Entonces, libera el búfer.

Compile el archivo C usando el compilador GCC. El readlink.El archivo de salida contiene el resultado del archivo.

En la primera ejecución, pasa el nombre del directorio, que no es el enlace simbólico, por lo que da un error a que no hay dicho archivo o directorio.

A continuación pasamos el directorio raíz, que es un argumento no válido.

Ahora que hemos pasado la ruta, la función readlink devuelve el nombre del enlace simbólico al que apunta.

Usemos un archivo C para construir un archivo y un enlace simbólico. Hemos creado un nombre de archivo y un enlace simbólico en la función principal. Cree el archivo con el interruptor S iwuser usando la función Crear. Se puede hacer un nuevo enlace duro a un archivo existente utilizando el método de enlace de la biblioteca C (). Para construir un enlace suave, use el método symlink (). No se sobrescribirá si el archivo o ruta de enlace ya existe. Cuando tiene éxito, el enlace de funciones () y Symlink () regresan 0.

Utilice el compilador GCC para compilar el código, luego guarde los resultados en readLink1.archivo.

Ejecutar el código. Aquí está la salida:

Conclusión:

Se trata del uso de la función readlink () de C dentro de algunos de los ejemplos implementados en el sistema Kali Linux. Hemos elaborado en su uso, su sintaxis y los errores que contiene dentro de algunos de los ejemplos para ser más específicos y claros.