Función GetCWD en lenguaje C

Función GetCWD en lenguaje C

La configuración de un directorio de trabajo que comienza desde el directorio raíz de Linux abre la posibilidad de acceder y trabajar con toda la estructura del archivo en las diversas carpetas de sistema y usuario.

El lenguaje C proporciona la función chdir () para configurar un directorio de trabajo y también tiene una función para consultar el directorio en el que está trabajando.

En este artículo de Sugerencia de Linux, aprenderá cómo usar la función getcwd () para consultar el directorio en el que está trabajando actualmente. Explicaremos el funcionamiento teórico de esta función, su sintaxis, los tipos de sus argumentos de entrada y salida, y cada tipo de datos.

Para usar esta función de manera práctica, aplicaremos todo lo que aprendimos a través de un ejemplo práctico en el que aprende paso a paso sobre cómo usar esta función para recuperar el directorio de trabajo actual.

Sintaxis de la función getCwd () en lenguaje C

char *getcwd (char *buf, size_t size);

Descripción de la función getcwd () en lenguaje C

La función getcwd () consulta el directorio de trabajo actual del programa o proceso de llamadas. Esta función devuelve el puntero a una matriz de caracteres "BUF de tamaño" que contiene una cadena con la ruta absoluta del directorio de trabajo actual.

Si la llamada a la función getCwd () es exitosa, devuelve el puntero a la cadena con la ruta del directorio de trabajo. Si se produce un error, el resultado es un puntero nulo. En este caso, el código de identificación de error se almacena automáticamente en la variable Global ERRNO.

Tanto la declaración de la variable ERRNO como las definiciones de los códigos de error están en el "ERRNO.encabezado. En el siguiente ejemplo, veremos una sección especial que explica cómo detectar e identificar los errores.

La función getcwd () se define en el "unistd.encabezado. Para usarlo, tenemos que incluirlo en nuestro ".Archivo C "de la siguiente manera:

#incluir

Cómo consultar el directorio de trabajo actual con la función getCwd () en el idioma C

En este ejemplo, explicaremos cómo recuperar el directorio de trabajo actual y mostrarlo en la consola de comando.

El primer paso para hacer esto es incluir los encabezados necesarios. En este caso, ellos son los "unistd.H "y" Stdio.archivos h ". Luego, abrimos una función Main () que devuelve un valor de retorno vacío y en el que declaramos una ruta de matriz con 128 elementos de tipo Char. En esta matriz, la función getCwd () almacena la cadena con el directorio.

Una vez que se declaran las variables necesarias, llamamos a la función getCwd (). Pasamos el argumento de entrada "BUF" como el puntero a la ruta de la matriz y el tamaño del búfer como tamaño de argumento, como 128 en este caso.

Luego, usando la función printf (), imprimimos el mensaje "El directorio real es:" seguido de la ruta del directorio que devuelve la función getCwd (). Aquí está el código completo para este ejemplo:

#incluir
#incluir
vacío principal ()

camino de char [128];
getcwd (ruta, 128);
printf ("\ n \ n El directorio real es: %s \ n", ruta);

A continuación, vemos una imagen con la compilación y ejecución de este código. En este caso, getCWD () devuelve la ruta absoluta del directorio de inicio del usuario en sesión:

El mismo puntero que getCwd () regresa en el argumento "BUF" devuelve el siguiente resultado:

puntero a buff = getcwd (puntero a buff, tamaño);

Esto permite que la función getcwd () se llame desde los argumentos de entrada de otra función. El siguiente código muestra la llamada de los argumentos de entrada de printf ():

#incluir
#incluir
vacío principal ()

camino de char [128];
printf ("\ n \ n El directorio real es: %s \ n", getCwd (ruta, 128));

En este caso, printf () lleva el puntero a la cadena que devuelve getCwd () y lo imprime a la consola de comando con solo una línea de código.

La siguiente imagen muestra que este método tiene el mismo efecto que el programa en el ejemplo anterior:

Errores Al usar la función getCwd (): cómo detectarlos e identificarlos

Si se produce un error al llamar a la función getCwd (), devuelve un puntero nulo como resultado. La forma más fácil de detectar un error es usar una condición "si" donde la condición de entrada se determina por un resultado que es igual a NULL. El siguiente es un fragmento de código que utiliza este método para la detección de errores:

if (getCwd (ruta, 128) == NULL)

printf ("Se produjo un error en la llamada de función getCwd ().\ n ");

Cuando se produce un error, un código numérico que lo identifica se almacena automáticamente en la variable Global Errno que se declara en el "Errno.encabezado.

Este encabezado también define los códigos de error y su representación numérica.

Puede ver los errores que puede generar la función getcwd (), su representación numérica que se devuelve en la variable errno y una breve descripción de cada uno:

Definición Valorar errar Descripción
Enoent 2 El fichero o directorio no existe.
Eacces 13 Permiso denegado
Enfermo 14 Dirección mala.
Einval 22 Argumento no válido.
Enametoolong 36 Nombre o ruta del archivo demasiado tiempo.

La forma más fácil de identificar un error es abrir un interruptor condicional donde la condición de salto es la variable global errno y cada caso es una definición de error. Vemos el código para este método de detección en el siguiente:

if (getCwd (ruta, 128) == NULL)

switch (errno)
Caso Einval:
printf ("Argumento no válido.\ n ");
romper;
Caso Efault:
printf ("Dirección mala.\ n ");
romper;
Caso enoent:
printf ("No hay dicho archivo o directorio.\ n ");
romper;

Las variables y los códigos de error se definen en el "Errno.encabezado. Para usarlos, debemos incluirlos en nuestro ".Archivo C "de la siguiente manera:

#incluir

Conclusión

En este artículo de Sugerencia de Linux, explicamos cómo usar la función getcwd () para determinar el directorio de trabajo actual del programa de llamadas.

Observamos una sección teórica sobre esta función, cuáles son sus argumentos de entrada y salida y qué tipo de datos usa. Luego, aplicamos lo que aprendimos a través de los ejemplos prácticos con imágenes y fragmentos de código que muestran cómo declarar las variables necesarias y llamar a la función getCwd ().

También incluimos una sección especial en la que enumeramos los diferentes errores que esta función puede generar y explicaron cómo detectarlos.