GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lege ich das Arbeitsverzeichnis des übergeordneten Prozesses fest?

Der Befehl chdir ist in die Shell integriert, sodass er direkten Zugriff auf das Arbeitsverzeichnis der Shell hat, die ihn ausführt. Shells sind normalerweise ziemlich gut darin, sich selbst vor den Auswirkungen von Skripten zu schützen, indem sie dem untergeordneten Prozess eine Kopie geben der eigenen Arbeitsumgebung der Shell. Wenn der untergeordnete Prozess beendet wird, wird die verwendete Umgebung gelöscht.

Eine Sache, die Sie tun können, ist, ein Skript zu "sourcen". Auf diese Weise können Sie das Verzeichnis ändern, da Sie der Shell im Wesentlichen mitteilen, die Befehle aus der Datei auszuführen, als ob Sie sie direkt eingegeben hätten. Das heißt, Sie arbeiten nicht mit einer Kopie der Shell-Umgebung, sondern arbeiten beim Sourcing direkt daran.


Es gibt keinen "legalen" Weg, das aktuelle Verzeichnis des Elternprozesses zu beeinflussen, außer einfach den Elternprozess zu bitten, es selbst zu ändern.

chdir das das Verzeichnis in Bash-Skripten ändert, ist kein externes Dienstprogramm, sondern ein eingebauter Befehl.


Tu das nicht.

FILE *p;
char cmd[32];
p = fopen("/tmp/gdb_cmds", "w");
fprintf(p, "call chdir(\"..\")\ndetach\nquit\n");
fclose(p);
sprintf(cmd, "gdb -p %d -batch -x /tmp/gdb_cmds", getppid());
system(cmd);

Es wird wahrscheinlich funktionieren, beachten Sie jedoch, dass Bashs pwd Befehl wird zwischengespeichert und wird es nicht bemerken.


Linux
  1. Neuer übergeordneter Prozess, wenn der übergeordnete Prozess stirbt?

  2. Linux – Wie stellt man die Prozessoraffinität eines Prozesses unter Linux ein?

  3. Wie beendet man einen Prozess, dessen Eltern Init ist?

  4. So setzen Sie das Evil Bit auf ausgehenden Datenverkehr

  5. Wie kann ich die Prozessoraffinität eines Prozesses unter Linux einstellen?

So ändern Sie die Priorität eines Prozesses in Linux

So ermitteln Sie die Gesamtgröße eines Verzeichnisses in Linux

So richten Sie den Pretty Hostnamen ein

Wie richte ich den Verzeichnisdatenschutz in cPanel ein?

So richten Sie die UFW-Firewall unter Linux ein

So senden Sie Prozesse unter Linux an den Hintergrund