2016-11-01 4 views
-1

chdir()を使用して現在のディレクトリを変更すると、プログラムがシャットダウンされてもプログラムは変更されません。だから、chdir()を使ってシェルにchdir()を適用すると、プログラムは終了したのでしょうか?C言語プログラムでシェルディレクトリを変更するにはどうすればよいですか?

+0

** **なぜあなたは**に尋ねますか? **それを改善し、動機づけするために、**の質問**を編集してください。 –

+0

PWD環境変数を変更することは考えられます(OSによって異なります)。しかし、私はそれをテストしていない。 – LotoLo

+1

@LotoLo:「PWD」を変更しても、親プロセスの現在のディレクトリ(シェルのプロセス)には影響しません –

答えて

3

(Cプログラムの中から親シェルディレクトリを変更することはできません)。現在のディレクトリはすべてprocessの属性であり、シェルはプログラムとは異なるプロセスで実行されます(シェルプロセスとプログラムのプロセスにそれぞれ独自のカレントディレクトリがあります)。

Advanced Linux Programmingを読んでください。あなたの問題に関連する章がいくつかあります。

おそらく、あなたはおそらくあなたのCプログラム(出力いくつかのcdコマンドをだろう、あなたのシェルのevalまたはsource組み込みがあろうとを実行するためにevalを使用することができ、いくつかのシェル関数(例えば、あなたの~/.bashrcに...)を追加することができますと同じシェルプロセス内のハンドル); BTW ssh-agentは刺激的かもしれません。実際には、あなたが初心者の場合はこのルートをお勧めしません。

PS。あなたは本当にあなたの質問を動かす必要があります多くを与える詳細;それはXY problemのようにひどく匂いがする。

+0

シェルコマンドを実行する必要がある場合にのみ 'execl'を実行します – Ashish

+1

@Ashish:あなたは何を意味するのか理解できません(そしてOPの質問にはどう関係していますか)それは、すべてのプロセスが独自のカレントディレクトリを持っているという事実を変えるものではありません。 –

関連する問題