■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

Cygwin使っている人いますか? part5

618 :14 :02/08/29 01:16
ちょっと調べているうちに、「rxvt上cmd経由でDOS窓出る場面だと
リダイレクトも効かない」という問題に気づき。
うわー。こんなMS的バグっぽい仕様は、ていうか、その通りか。

調べた中間報告。
CreateProcess()にDETACHED_PROCESSを指定するとDOS窓は出ない。
CREATE_NEW_CONSOLEを指定すると新しくDOS窓が出る。
指定しない場合自分のDOS窓を継承するか自分が持ってなければ新しく作る。
(一方標準入出力の継承はDOS窓の話とは完全に独立。)

cygwin1.dllはたぶん自分がDOS窓持ってるかどうかで場合わけして、
持ってたら指定無しで継承させ、持ってなかったら
DETACHED_PROCESSで作らせない。
普通のコンソールアプリはそこまで考えて作る人がいないので常に指定無し
相当。

rxvtはもともと隠しDOS窓を継承させて新たなDOS窓の発生を予防していた
のに、--subsystem,windowsで非コンソールアプリになってしまったために
DOS窓継承がなくなって、非cygwinアプリがコンソールアプリを起動しようと
するとDOS窓が発生する。
とにかくcygwin1.dllが直接の原因じゃないってことだ。(つーか
コンソールAPIとなんとか統合しないと本当のDOS窓ゼロは不可能。)
とにかくrxvt起動時のDOS窓一瞬表示と同時に解決する方策を
探ってみますわ。(cvs使いの466さんはとりあえずconfig.shから
--subsystem,windowsを……ってもしかしてバイナリ待ち?)

(Win9xで)inetdでtelnetする場合は、inetdをバッチファイルから立ち上げて
DOS窓1つ作っておけばコマンド実行するたびにDOS窓が出る事態は
避けられるんじゃないかと。
(……普通逆の話をするよな。間違ってるというか道を踏み外してるというか。)



掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)