Linux hat ein /procVerzeichnis und ein Dateisystem, die, soweit ich das beurteilen kann, nicht Teil von POSIX sind. In jedem /proc/$PIDUnterverzeichnis befindet sich ein symbolischer Link, cwdder auf das tatsächliche Arbeitsverzeichnis des Prozesses dieser PID verweist (der cwdLink ist immer aktuell).
Diese symbolische Verknüpfung ist für einige Anwendungsfälle praktisch, z. B. das Arbeiten mit unterschiedlichen Shells und das Austauschen von Dateien zwischen den beiden Shells (formal deren Arbeitsverzeichnisse).
Gibt es eine einfache Möglichkeit, etwas Ähnliches zu erhalten, nur mit der POSIX-Funktion?
Mehr zur Frage
Nach einem Kommentar, mehr Präzision: Es muss nicht unbedingt ein Link und eine Umgebungsvariable sein $<PID>_CWD, wäre auch so gut, obwohl ich auf den ersten Blick nicht glaube, dass es eine solche Lösung gibt. Es muss nur leicht zu referenzieren sein (z. B. symbolischer Link oder Umgebungsvariable) und jedes Mal auf dem neuesten Stand sein, wenn der andere Prozess das Arbeitsverzeichnis wechselt.
Die Lösung muss nicht unbedingt POSIX sein, und der wichtigste Aspekt ist die Portabilität, aber POSIX ist sicherlich eine Garantie.
pwdxBefehl. Sie können also einfach einen Alias oder eine Funktion erstellen, die pwdxunter Linux aufgerufen wird und sich umgibt, readlinkwenn Sie nach etwas Tragbarem suchen.
pwdxBefehl, der mitgeliefert wird , procpssodass dies möglicherweise Ihre Antwort ist.
pwdx. Aber FreeBSD nicht.
getcwd(3)verwendet, indem Sie stat(".")und anrufen readdir(".."), eine passende Inode-Nummer finden und den Vorgang nach oben wiederholen, bis er das Stammverzeichnis erreicht. Viel Glück dabei , dass im Rahmen eines anderen Verfahrens. (Ich nehme an, man könnte verwenden ptrace, um einen Anruf an getcwd...)