Windows 7 では、"-mwindows" ありでも "-mno-cygwin" なしでコンパイルした場合にはプロンプトがでるっぽい。
このレベルのサンプルで確認。http://www.sixnine.net/cygwin/translation/mingw-doc/docs.html
Cygwin 1.7betaでビルドすると出ないとか。
1.7 は 9x 系を切り捨てているので、そっちで動かなくなりそうなのが心配です。
従来のCygwinでビルドした版と、1.7系でビルドした版の2つの"cygterm.exe"を用意して、 インストールで切り分ける、とかですかねぇ。 もしくは、"cygterm9x.exe"と"cygtermNT.exe"の2つを同梱して、Tera Termからの 呼び出し時に、OS判定して、起動するEXEを切り替える、とか。
バッチでビルドしていますが、二種類の cygwin 環境を共存させることは出来るでしょうか。
あくまで回避ですが、cyglaunch と同じように -mno-cygwin をつければ大丈夫ではないかと思います。1.7だと大丈夫というのは、どこの情報ですか?1.5系での回避は話題になっていませんか?
-mno-cygwinは、Cygwinの機能が一切使えないので、cygterm.exeには指定できなかったと思います。 1.7系は、Windows7にも対応していると思っただけで、裏付けは取れていません。
cyglauncで、CreateProcess()するときに、STARTUPINFO構造体のwShowWindowメンバを、HIDEに すると、どうなるでしょうか。
-mno-cygwinは、Cygwinの機能が一切使えないので
確認しました。コンパイルに失敗しますのでこれはだめですね。
wShowWindow
cygterm.exe をダブルクリックしたときに cygterm.exe/cygterm.exe/Tera Term ウィンドウが現れ、cyglaunch.exe をダブルクリックしたときに cyglaunch.exe/cygterm.exe/Tera Term ウインドウが現れていました。 これが cyglaunch の HIDE により、cygterm.exe をダブルクリックしたときに cygterm.exe/cygterm.exe/Tera Term ウィンドウが現れ(変わらず)、cyglaunch.exe をダブルクリックしたときに cygterm.exe/Tera Term ウインドウが現れるようになりました。動きは変化しましたが、なんでこのように変化したのかわかりません。
どうやら、Windows 側の問題のようです。
cygwin ml http://www.cygwin.com/ml/cygwin/2009-04/threads.html#00151 http://www.cygwin.com/ml/cygwin/2009-05/threads.html#00224 http://www.cygwin.com/ml/cygwin/2009-06/threads.html#00940
MSは修正を先送りした http://www.cygwin.com/ml/cygwin/2009-05/msg00224.html
workaround http://www.cygwin.com/ml/cygwin/2009-06/msg00945.html
コミットされた修正 http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/fhandler_console.cc.diff?r1=1.195&r2=1.198&cvsroot=src
1.5.x のブランチと思われる cr-0x5f1 は、2008/7/12 以来触られていないようです。この修正が 1.5 に取り込まれる見込みはあまりなさそうです。
cygwin 1.5.25 でコンパイルしたものが 1.7 で動いているので、リリース体制は今のままで大丈夫だと思います。「Windows 7 では cygwin 1.7.x 以上が必須」という要件にしたいと思います。
http://pc12.2ch.net/test/read.cgi/unix/1225116847/218
x86 でも再現する。