Livello concettuale
Quando si avvia un processo dalla shell, la directory di lavoro corrente del processo è la stessa della directory di lavoro corrente della shell. Nel contesto della shell, la directory di lavoro corrente è la posizione in cui ci si trova attualmente "."
La directory di lavoro corrente di qualsiasi processo viene utilizzata per interpretare i percorsi relativi. Ad esempio, se la directory di lavoro corrente della shell era /home/reneed è stato eseguito ls ..dalla shell, directory di lavoro corrente del processo, /home/rene, sarebbero stati utilizzati per risolvere ..a /home.
Puoi vedere le directory di lavoro correnti di tutti i processi in esecuzione sul tuo sistema lsof | grep '\scwd\s'(tieni presente che probabilmente dovrai essere root per vedere i processi di altri utenti.) Questo può darti un'idea di come le attuali directory di lavoro si collegano al processi in esecuzione sul tuo sistema.
Livello del programma
L'attuale directory di lavoro della shell è la directory che vedi e modifichi con gli shell incorporati pwde cdrispettivamente. Questi comandi chiamano chiamate di sistema come getcwde chdirche funzionano con l'attuale directory di lavoro della shell.
Usando bashcome esempio, il cdbuilt-in alla fine esegue questa riga:
if (chdir (nolinks ? newdir : tdir) == 0)
e il pwdbuilt-in alla fine esegue questa linea:
the_current_working_directory = getcwd (0, PATH_MAX);
La shell è solo un comodo esempio dell'uso della directory di lavoro corrente; queste stesse chiamate di sistema vengono utilizzate anche da altri programmi. Un programma può cambiare la sua directory di lavoro corrente in /usre tutti i percorsi relativi che il programma utilizza inizieranno dalla /usrdirectory,
Livello del kernel
L'attuale directory di lavoro di un processo è memorizzata dal kernel. Linux lo memorizza nel pwdmembro di un fs_structpuntato dal fsmembro di un task_struct. Il pwdmembro è uno pathstruct, che punta a informazioni sul mount ( vfsmount) e sulla posizione della directory nel filesystem ( dentry). Ogni processo ha un task_structassociato con esso.
Le chiamate chdire di getcwdsistema modificano e recuperano le informazioni in pwd.