- - PR -
WindowsバッチファイルとUNIXシェルスクリプトのプロセスの違い
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-20 20:47
Winバッチファイル内、Unixシェルスクリプト内で
ファイルを実行するときのプロセスの状態の違いについて。 正確なもしくは分かりやすい情報はどこにありますか? 下記のとおりでしょうか? ■Windowsはそのバッチファイルのプロセス内で実行 cdでディレクトリを移動しても次のコマンドに引き継がれる。 ■Unixはコマンドごとに新しいプロセスを作成して実行、プロセス削除。 cdでディレクトリを移動しても次のコマンドに引き継がれない。 ※回避は cd aaa; xyz ? また Makefileもnmakeとmakeの扱いも同様ですか? | ||||||||||||
|
投稿日時: 2006-07-20 23:55
「ファイルを実行」という表現が外部コマンドの実行だとすれば、 バッチファイルのプロセス(CMD.EXE)内で実行するわけじゃないです。 CMD.EXEのプロセス内で実行されるのは内部コマンドだけです。
Windowsと同じように引き継がれると思いますよ・・・? もしかして、';'で区切って同じ行に書けば挙動が変わると思ってたりします? (cd aaa); xyzというように子プロセス化すれば挙動が変わりますけど。 cdに関してはWindows/Unix共にshellのプロセス内で実行されますよ。 カレントディレクトリはどちらのモデルもプロセス毎に存在するので、 外部のプロセスから変更するような作りにはなっていません。
どちらもMakefileのあるディレクトリがカレントになったような? もうずいぶんMakefileなんて書いてないのでおぼろげですが。 |
1