No.2330![]() |
7章のsystemについて 投稿者---クワトロ(2004/07/20 11:23:27) |
||
このサイトで1章から順に勉強してまして、7章までとりあえず来ました。 7章の「一般ユーティリティ関数」のsystemという関数で質問させてください。 system("set"); という記述だと環境変数の一覧みたいなのが表示されます。 (WinXPでBorland5.5です) そこで、set tomcat_home=C:\Tomcat 4.1を追加しようと system("set tomcat_home=C:\Tomcat 4.1"); としてみたんですが、この後でもう一度 system("set");とやると、tomcat_homeの記述がありません。 つまり、セットされてないように思います。 実際に試したみたのが #include <stdlib.h> #include <stdio.h> int main(void) { char str[] = "set"; system(str); system("set tomcat_home=C:\Tomcat 4.1"); getchar(); system(str); getchar(); return 0; } です。 うまくセットできる方法があれば教えてください。 宜しくお願いいたします。 |
No.2338![]() |
Re:7章のsystemについて 投稿者---YuO(2004/07/20 20:41:33) |
||
>そこで、set tomcat_home=C:\Tomcat 4.1を追加しようと >system("set tomcat_home=C:\Tomcat 4.1"); >としてみたんですが、この後でもう一度 >system("set");とやると、tomcat_homeの記述がありません。 >つまり、セットされてないように思います。 単純に, set tomcat_home=C:\Tomcat 4.1 をコマンドプロセッサが実行して,コマンドプロセッサ自身のプロセスの環境変数に追加した後, コマンドプロセッサは終了します。 その後, set と実行したところで,先の環境変数への変更はプロセス内で閉じているため, tomcat_homeへの変更は見つかりません。 #親プロセスの環境変数が引き継がれているはず。 >うまくセットできる方法があれば教えてください。 親プロセスの環境変数を変更する方法は無いと思います。 システムやユーザーの環境変数を変更する方法であれば,MSDNのEnvironment Variablesあたりが参考になるでしょう。 |
No.2340![]() |
Re:7章のsystemについて 投稿者---RAPT(2004/07/21 00:38:46) |
||
WinNT系なら、cmd /k でコマンドを実行し、「終了しないでいること」は できると思います。多分。 |
No.2344![]() |
Re:7章のsystemについて 投稿者---クワトロ(2004/07/21 10:44:07) |
||
回答ありがとうございました。 2つめのコマンド実行の時点で1つ目はもう終わっていたんですね。 ありがとうございました。 |