GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengatur direktori kerja dari proses induk?

Perintah chdir adalah built-in shell, sehingga memiliki akses langsung ke direktori kerja shell yang menjalankannya. Kerang biasanya cukup bagus dalam melindungi diri dari efek skrip, memberikan proses salinan kepada anak lingkungan kerja shell itu sendiri. Saat proses anak keluar, lingkungan yang digunakannya dihapus.

Satu hal yang dapat Anda lakukan adalah 'sumber' skrip. Ini memungkinkan Anda mengubah direktori karena pada dasarnya, Anda memberi tahu shell untuk menjalankan perintah dari file seolah-olah Anda telah mengetiknya secara langsung. Artinya, Anda tidak bekerja dari salinan lingkungan shell, Anda mengerjakannya secara langsung, saat sumber.


Tidak ada cara "legal" untuk memengaruhi direktori saat ini dari proses induk selain yang hanya meminta proses induk untuk mengubahnya sendiri.

chdir yang mengubah direktori dalam skrip bash bukanlah utilitas eksternal, ini adalah perintah bawaan.


Jangan lakukan ini.

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

Itu mungkin berfungsi, meskipun perhatikan bahwa pwd Bash perintah di-cache dan tidak akan menyadarinya.


Linux
  1. Bagaimana Cara Mendapatkan Localhost Dengan Direktori Berbeda Agar Indeks Bekerja?

  2. Bagaimana cara mengatur nama utas di Linux pthreads?

  3. Cara membunuh proses zombie

  1. Proses Induk Baru Ketika Proses Induk Meninggal?

  2. Linux – Bagaimana Cara Mengatur Afinitas Prosesor Suatu Proses Di Linux?

  3. Bagaimana Cara Menginstal R 3.3.1 Di Direktori Sendiri?

  1. Bagaimana Membunuh Proses Yang Induknya Init?

  2. Cara mengatur Bit Jahat pada lalu lintas keluar

  3. Bagaimana saya bisa mengatur afinitas prosesor dari suatu proses di Linux?