GNU/Linux >> Linux の 問題 >  >> Linux

親プロセスの作業ディレクトリを設定するにはどうすればよいですか?

chdir コマンドはシェルに組み込まれているため、コマンドを実行するシェルの作業ディレクトリに直接アクセスできます。シェルは通常、スクリプトの影響から身を守るのに非常に優れており、子プロセスに コピー を提供します。 シェル自身の作業環境の。子プロセスが終了すると、それが使用していた環境は削除されます。

できることの 1 つは、スクリプトを「ソース化」することです。これにより、ディレクトリを変更できます。これは、本質的には、コマンドを直接入力したかのように、ファイルからコマンドを実行するようにシェルに指示しているためです。つまり、シェルの環境のコピーから作業するのではなく、ソースを取得するときに直接作業しています。


親プロセスにそれ自体を変更するように要求する以外に、親プロセスの現在のディレクトリに影響を与える「合法的な」方法はありません。

chdir これは、bash スクリプトでディレクトリを変更するものであり、外部ユーティリティではなく、組み込みコマンドです。


これをしないでください。

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

おそらく ただし、Bash の pwd に注意してください。 コマンドはキャッシュされ、気付かれません。


Linux
  1. 親プロセスが終了したときの新しい親プロセス?

  2. 自分のディレクトリにR3.3.1をインストールする方法は?

  3. ゾンビプロセスを強制終了する方法

  1. Linux – Linuxでプロセスのプロセッサ親和性を設定するにはどうすればよいですか?

  2. 親が初期化されているプロセスを強制終了する方法は?

  3. Linux でプロセスのプロセッサ アフィニティを設定するにはどうすればよいですか?

  1. インデックスとは異なるディレクトリを持つローカルホストを機能させる方法は?

  2. Linux pthreads でスレッドの名前を設定するには?

  3. 送信トラフィックに Evil Bit を設定する方法