teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

問題は別だった。

2016/10/05 22:55

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -7,4 +7,15 @@
7
7
  具体的に言うと、forkでプロセスがA/Bに別れ、Bで作業ディレクトリを変更したとしても、Aのプロセスにはもちろん、それ以降にforkされたプロセスにも影響されません。
8
8
 
9
9
  bashなんかでも、cdコマンドは内部コマンド、つまり新たにプロセスを作成せずにbashのプロセス内で処理しています。(多分)
10
- 同じ事をするならば、os.chdirなどを使用して、別処理を行わなければなりません。
10
+ 同じ事をするならば、os.chdirなどを使用して、別処理を行わなければなりません。
11
+
12
+ ---
13
+ よく考えてみたら、エラーは別の問題ですね。まぁ、ヒントにはなっていますが。
14
+ というわけで、もう一回回答を。
15
+
16
+ execvpは、実行ファイルを新たなプロセスとして実行する処理です。
17
+ それに対して、cdコマンドは上でも書いたとおりシェルの内部コマンドであり、実行ファイルはありません。
18
+ (「which cd」を実行してみてください。結果が出てきませんよね?)
19
+ なので、「FileNotFound」なのだと思います。
20
+
21
+ まぁ、最初に書いたことも重要な話なので、気をつけてください。

1

ちょっと修正

2016/10/05 22:55

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -6,5 +6,5 @@
6
6
 
7
7
  具体的に言うと、forkでプロセスがA/Bに別れ、Bで作業ディレクトリを変更したとしても、Aのプロセスにはもちろん、それ以降にforkされたプロセスにも影響されません。
8
8
 
9
- bashなんかでも、cdコマンドは内部コマンド、つまり新たにプロセスを作成せずにbashのプロセス内で処理しています。
9
+ bashなんかでも、cdコマンドは内部コマンド、つまり新たにプロセスを作成せずにbashのプロセス内で処理しています。(多分)
10
10
  同じ事をするならば、os.chdirなどを使用して、別処理を行わなければなりません。