Nivel conceptual
Cuando inicia un proceso desde su shell, el directorio de trabajo actual del proceso es el mismo que el directorio de trabajo actual de su shell. En el contexto del shell, el directorio de trabajo actual es la ubicación en la que se encuentra "actualmente".
El directorio de trabajo actual de cualquier proceso se utiliza para interpretar rutas relativas. Por ejemplo, si el directorio de trabajo actual de su concha era /home/reney que corrió ls ..desde el shell, directorio de trabajo actual del proceso, /home/renese usaría para resolver ..a /home.
Puede ver los directorios de trabajo actuales de todos los procesos que se ejecutan en su sistema lsof | grep '\scwd\s'(tenga en cuenta que probablemente necesitará ser root para ver los procesos de otros usuarios). Esto puede darle una idea de cómo se relacionan los directorios de trabajo actuales con el procesos que se ejecutan en su sistema.
Nivel de programa
El directorio de trabajo actual del shell es el directorio que ve y modifica con los shell incorporados pwdy cdrespectivamente. Estos comandos llaman a llamadas al sistema como getcwdy chdirque funcionan con el directorio de trabajo actual de su shell.
Utilizando bashcomo ejemplo, el cdincorporado finalmente ejecuta esta línea:
if (chdir (nolinks ? newdir : tdir) == 0)
y el pwdincorporado finalmente ejecuta esta línea:
the_current_working_directory = getcwd (0, PATH_MAX);
El shell es solo un ejemplo conveniente del uso actual del directorio de trabajo; estas mismas llamadas al sistema también son utilizadas por otros programas. Un programa puede cambiar su directorio de trabajo actual /usry cualquier ruta relativa que use el programa comenzará desde el /usrdirectorio,
Nivel de grano
El kernel almacena el directorio de trabajo actual de un proceso. Linux lo almacena en el pwdmiembro de un fs_structapuntado por el fsmiembro de a task_struct. El pwdmiembro es una pathestructura, que apunta a información sobre el montaje ( vfsmount) y la ubicación del directorio en el sistema de archivos ( dentry). Cada proceso tiene un task_structasociado con él.
Los chdiry getcwdsistema de llamadas modificar y recuperar información en pwd.
Cada proceso tiene un directorio de trabajo actual (CWD) al que está asignado cuando se inicia. Puede hacer lo siguiente para encontrar el directorio de trabajo para un proceso.
Ejecute ps aux para descubrir el PID de un proceso:
Para encontrar el directorio de trabajo actual de un PID: 24532
Entonces el proceso (PID: 24532) tiene un CWD de
/.Aquí hay otro ejemplo:
Esta vez el proceso del sueño (PID: 15988) tiene su conjunto CWD a mi directorio,
/home/sam.También puede ejecutar el
ls -lcomando:-o-
Aquí puede ver nuevamente el CWD para esos procesos,
/y/home/sam.Referencias
fuente