[#31787] MIME decoding — Tietew <tietew@...>

Tietew です。

24 messages 2001/10/08

[#31866] 先祖がえり — "T.Shirakawa" <niegh@...>

はじめまして つい最近、MLに登録した白川です。

20 messages 2001/10/14
[#31867] Re: 先祖がえり — Koji Arai <JCA02266@...> 2001/10/14

新井です。

[#31889] Ruby Conference — Minero Aoki <aamine@...>

あおきです。

31 messages 2001/10/16
[#31905] Re: Ruby Conference — matz@... (Yukihiro Matsumoto) 2001/10/17

まつもと ゆきひろです

[#31923] Re: Ruby Conference — TAKAHASHI Masayoshi <maki@...> 2001/10/17

高橋征義です。

[#31932] しぶらぐ — "KANEMITSU Masao" <masao-k@...> 2001/10/18

http://www.ne.jp/asahi/masao-k/home/newpage1.htm

[#31906] 数値の配列の一部を文字列にして、多重代入したい — みかみまさと <kofu@...>

こんにちは。みかみにございます。

9 messages 2001/10/17

[#32016] Re: コメント削除スクリプト — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>

こんにちは。永井です。

15 messages 2001/10/24
[#32018] Re: コメント削除スクリプト — TASHIRO Katsuya <tashiro_katsuya@...> 2001/10/24

田代と申します.

[#32123] dRuby の DRbUndumped#_dump は? — FUJIMOTO Hisakuni <hisa@...>

こんにちは、藤本です。

21 messages 2001/10/30
[#32124] Re: dRuby の DRbUndumped#_dump は? — m_seki@... 2001/10/30

[#32126] Re: dRuby の DRbUndumped#_dump は? — shudo@... 2001/10/31

咳さん wrote:

[#32145] Test::Unit — MUTOH@...

むとうです。

20 messages 2001/10/31

[ruby-list:32070] Re: mingw32, cygwin の ENV が子プロセスに引き継がれない

From: Tatsuo Akiyama <AEM05922@...>
Date: 2001-10-25 15:53:27 UTC
List: ruby-list #32070
秋山です

   "U.Nakamura" <usa@osb.att.ne.jp> さんが
   Thu, 25 Oct 2001 10:48:42 +0900 に出した
   「[ruby-list:32045] Re: mingw32, cygwin の ENV が子プロセスに引き継がれない」の件ですが

> cygwin版もそうなのだと思いますが、OSが管理している環境変数と
> ランタイムライブラリが管理している環境変数が異なるのが原因で
> す。
> mingw32版・mswin32版は現状はランタイムライブラリが管理してい
> る環境変数は操作せずにOSが管理している環境変数を操作していま
> すので、ランタイムライブラリ経由で子プロセスを生成すると、親
> での変更結果が受け継がれません。
> しかし、直接APIを叩いて子プロセスを生成すると変更結果が受け継
> がれます。
> コンパイル時にUSE_WIN32_RTL_ENVがdefineされていると、ちょうど
> 逆のことを行うコードを生成します。
> # hash.cのruby_setenv()を参照

USE_WIN32_RTL_ENV を define して hash.c をコンパイルしてみたところ、
system() で起動した子プロセスに ENV の変更が引き継がれました。
(ちょっと書き換えないとコンパイル通りませんでしたが。)

USE_WIN32_RTL_ENV は元に戻して、
win32/win32.c を眺めていたら、
do_spawn() で spawnvpe(), spawnle() が使われていたので、
spawnvpe()→spawnvp(), spawnle()→spawnl() に書き換えたところ、
子プロセスに ENV の変更が引き継がれました。
(少し動かしてみただけですが)
デフォルトの USE_WIN32_RTL_ENV が define されていない状態では、
スクリプトで ENV を変更しても environ の中身が変わらないため、
spawnvpe(), spawnle() で environ を渡していることにより、
ENV の変更が子プロセスに引き継がれないように思われるのですが、
spawnvp(), spawnl() だと問題があるのでしょうか。

ところで同じ win32/win32.c の mypopen() は
CreateProcess() を使っているのですね。
ということは
  WIN32API CreateProcess(): ENV変更が引き継がれる
  system():                 ENV変更が引き継がれない
  IO.popen():               ENV変更が引き継がれる
ですね。なんで system() だけ...
この ENV と system() の関係は、今後も変わらないのでしょうか。

In This Thread