GNU/Linux >> Linux Esercitazione >  >> Linux

Come imposto la directory di lavoro del processo genitore?

Il comando chdir è integrato nella shell, quindi ha accesso diretto alla directory di lavoro della shell che lo esegue. Le shell di solito sono abbastanza brave a proteggersi dagli effetti degli script, dando al processo figlio una copia dell'ambiente di lavoro della shell. Quando il processo figlio esce, l'ambiente utilizzato viene eliminato.

Una cosa che puoi fare è "creare" uno script. Ciò ti consente di cambiare la directory perché in sostanza stai dicendo alla shell di eseguire i comandi dal file come se li avessi digitati direttamente. Cioè, non stai lavorando da una copia dell'ambiente della shell, stai lavorando direttamente su di esso, durante il sourcing.


Non esiste un modo "legale" per influenzare la directory corrente del processo genitore se non chiedendo semplicemente al processo genitore di cambiarla.

chdir che cambia la directory negli script bash non è un'utilità esterna, è un comando integrato.


Non farlo.

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

probabilmente funziona, anche se nota che pwd di Bash il comando è memorizzato nella cache e non se ne accorgerà.


Linux
  1. Nuovo processo genitore quando il processo genitore muore?

  2. Come uccidere un processo il cui genitore è init?

  3. Come ottenere il Localhost con una directory diversa dall'indice funzionante?

  4. Come impostare l'Evil Bit sul traffico in uscita

  5. Come uccidere il processo di zombi

Come modificare la priorità di un processo in Linux

Come trovare la dimensione totale di una directory in Linux

Come impostare il nome host Pretty

Come impostare la privacy della directory in cPanel?

Come configurare il firewall UFW su Linux

Come inviare processi in background su Linux