| レス数が950を超えています。1000を超えると表示できなくなるよ。 |
cygwin使っている人いますか?
[509:名無しさん@お腹いっぱい。 (2001/07/16(月) 16:11)]
>>505
そりゃむづかしいぞ
ついでにいえば、アプローチが間違ってる。
そんだけの技術があるんなら、cygwinそのものをなおしてやれよ(藁
[510:cygwin (2001/07/16(月) 16:26)]
>>505
Windowsはプロセスの起動が*nixに調べて遅いから、*nixを
実質的にエミュレーションしているcygwinでsedとかプロセスを
バリバリ起動するものは非常に重く(遅く)なると思う。
*nixのネットワークサーバアプリケーションのようにfork()する
やつも同じ理由で遅くなる。
これはどっちが正しいとか言う問題ではなくて双方の性格の問題なのだが。(Windowsは統合することを良しとする性格なのに
対して、*nixは分散することを良しとするため)
[511:名無しさん@お腹いっぱい。 (2001/07/16(月) 16:38)]
>>(Windowsは統合することを良しとする性格なのに対して、*nixは分散することを良しとするため)
統合、分散とプロセスの起動が遅いのは関係ないでしょ。
Winはネイティブスレッドがあるから、プロセスをたくさん立ち上げるような
使い方を想定してなくて、そのあたりのチューニングがしてないだけ。
[512:505 (2001/07/16(月) 17:11)]
>>509
よく調べた訳じゃないし、cygwinをいじるような技術は全く持ち合わせて
いない程度の人間の言うことだから、割り引いて聞いてほしいのだが、
ashのソースを見ると、built-inの中で、bltin/echo.cとbltin/test.cに
ついては、あたかも独立したプログラムであるかのように分離されて
いるみたいで、
#include "builtin.h"
#deifne main cmdtest
なんて書いてあった。argc,argvなんかもエミュレートしているようだ。
だから、sedも、ファイル関係と名前の衝突に注意すれば、
比較的簡単にbuilt-in化できそうな気がする。ストリームの問題は
クリティカルだが、echoでリダイレクトが効くんだから、ash本体の
ソースの方で標準入出力の切り替えとかやっているはず。
exit()はsetjmp/longjmpでごまかす手がありそうだし。
[513:名無しさん@お腹いっぱい。 (2001/07/17(火) 02:56)]
そういえばWin3.1の頃、Unix like toolsの各コマンドを1つのDLLにぶち
込んで、各exeはDLLのルーチン呼ぶだけのstubになってる奴があったな。
ComWinだったか。
まぁCygwinの場合ボトルネックがfork部分なのは明白なので、それをなん
とかしようと思ったらやっぱりshell builtinにするしかないだろなぁ。
[514:511 (2001/07/17(火) 07:13)]
ちょっとCygwinのFAQを見てみたけどforkのインプリメントかなり
アクロバチックな方法だね。これじゃ遅いよ。
CygwinをNT/Win2000専用にして、CreateProcessじゃなくて、
NtCreateProcessを直接使うようにすれば、CreateProcessで指定できない
パラメータを指定できるようになり、forkをネイティブで実現できる
ようになるからかなり速くなるはず。でもこの辺Undocumentedだから
ちとつらいか。
[515: (2001/07/17(火) 11:27)]
>>508
出来ました。
しかし、こんなGUI画面が出てくるとは思いませんでした。
コンソールアプリなのかと思ってましたよ。
[516:cygwin (2001/07/17(火) 11:50)]
>511
返事が遅れたがフォロー感謝(__)
書き方がまずかったようで申し訳ない。
>>514
Nt*のAPIはOSのバージョンどころかサービスパック程度の違い
でも仕様が変わってたりするんで非常にリスクが高いと思う...
[517:名無しさん@お腹いっぱい。 (2001/07/17(火) 23:03)]
xeyesとかをエクスプローラから実行するとコンソールが出て憂鬱なんですけど、
これを出ないようにすることってできますか?
[518:名無しさん@お腹いっぱい。 (2001/07/18(水) 00:08)]
その xeyes て、どうやって入手したの?
Windows 用の XFree とかについて来るとか?
エクスプローラから起動できるってことは、
mingw gcc でコンパイルしてんのかな。
read.cgi ver5.26+ (01/10/21-)