chdir() en lenguaje C con ejemplos

El comando chdir es una función del sistema (llamada al sistema) que se utiliza para cambiar el directorio de trabajo actual. En algunos sistemas, este comando se usa como un alias para el comando de shell cd . chdir cambia el directorio de trabajo actual del proceso de llamada al directorio especificado en ruta.

Sintaxis:

int chdir(const char *path);

Parámetro: aquí, la ruta es la ruta del directorio que el usuario desea convertir en el directorio de trabajo actual.

Valor de retorno: este comando devuelve cero (0) en caso de éxito. -1 se devuelve en caso de error y errno se establece correctamente.

Nota: Se declara en unistd.h.

Ejemplo 1:

#include<stdio.h>
  
// chdir function is declared
// inside this header
#include<unistd.h> 
int main()
{   
    char s[100];
  
    // printing current working directory
    printf("%s\n", getcwd(s, 100));
  
    // using the command
    chdir("..");
  
    // printing current working directory
    printf("%s\n", getcwd(s, 100));
  
    // after chdir is executed
    return 0;
}

Producción:

Nota: El programa anterior cambia el directorio de trabajo de un proceso. Pero no cambia el directorio de trabajo del shell actual. Porque cuando el programa se ejecuta en el shell, el shell sigue el mecanismo fork on exec. Por lo tanto, no afecta el shell actual.

Ejemplo 2:

#include <unistd.h>
#include <stdio.h>
  
// Main Method
int main() {
  
  // changing the current 
  // working directory(cwd)
  // to /usr
  if (chdir("/usr") != 0) 
    perror("chdir() to /usr failed");
  
  // changing the cwd to /tmp
  if (chdir("/tmp") != 0) 
    perror("chdir() to /temp failed");
  
  // there is no /error 
  // directory in my pc
  if (chdir("/error") != 0) 
  
    // so chdir will return -1 
    perror("chdir() to /error failed");  
  
  return 0;
}

Producción:

Errores: Puede haber errores que pueden ser devueltos. Estos dependen del sistema de archivos.

  • EACCES: Si se deniega el permiso de búsqueda para uno de los componentes de ruta.
  • EFAULT: si los puntos de la ruta se encuentran fuera del espacio de direcciones accesible.
  • EIO: si se produjo un error de E/S.
  • ELOOP: si se encontraron demasiados enlaces simbólicos en la ruta de resolución.
  • ENAMETOOLONG: Si el camino es demasiado largo.
  • ENOENT: Si el archivo no existe.
  • ENOMEM: si no hay suficiente memoria del kernel disponible.
  • ENOTDIR: Si el componente de ruta no es un directorio.

Publicación traducida automáticamente

Artículo escrito por Prasoon_Mishra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *