GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir le répertoire de travail du processus parent ?

La commande chdir est intégrée au shell, elle a donc un accès direct au répertoire de travail du shell qui l'exécute. Les shells sont généralement assez bons pour se protéger des effets des scripts, en donnant au processus enfant une copie de l'environnement de travail du shell. Lorsque le processus enfant se termine, l'environnement qu'il utilisait est supprimé.

Une chose que vous pouvez faire est de "sourcer" un script. Cela vous permet de changer de répertoire car, en substance, vous dites au shell d'exécuter les commandes du fichier comme si vous les aviez saisies directement. C'est-à-dire que vous ne travaillez pas à partir d'une copie de l'environnement du shell, vous travaillez directement dessus, lors du sourcing.


Il n'y a pas de moyen "légal" d'influencer le répertoire courant du processus parent autre que de simplement demander au processus parent de le modifier lui-même.

chdir qui change le répertoire dans les scripts bash n'est pas un utilitaire externe, c'est une commande intégrée.


Ne fais pas ça.

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);

Ce sera probablement fonctionne, mais notez que le pwd de Bash la commande est mise en cache et ne le remarquera pas.


Linux
  1. Nouveau processus parent lorsque le processus parent meurt ?

  2. Comment faire fonctionner Localhost avec un répertoire différent de l'index ?

  3. Comment définir le nom d'un thread dans les pthreads Linux ?

  4. Comment définir l'affinité processeur d'un processus sous Linux ?

  5. Comment définir la passerelle par défaut

Comment changer la priorité d'un processus sous Linux

Comment trouver la taille totale d'un répertoire sous Linux

Comment configurer le joli nom d'hôte

Comment configurer la confidentialité du répertoire dans cPanel ?

Comment configurer le pare-feu UFW sous Linux

Comment envoyer des processus en arrière-plan sous Linux