| レス数が950を超えています。1000を超えると表示できなくなるよ。 |
cygwin使っている人いますか?
[207:追記 (2001/02/22(木) 14:08)]
上の例は、GUI付きCygwinアプリね。
WinネイティブなGUIアプリなら、
gcc -mno-cygwin -mwindows source1.c source2.c -o guiapp.exe
とか言う感じ
[208:205 (2001/02/22(木) 14:35)]
>>206,207
どうもです。あ、この程度のテストはしたのです。自作のちょこっと
したWindowsコードを、下のようなMakefileでmakeして-mno-cygwinつけたり
取ったりでどちらも動く事は確認してました。
test01.exe: test01.c test01.res
gcc -o $@ test01.c test01.res -mwindows
test01.res: test01.rc test01.h
windres $< -O coef $@
# -mno-cygwin付けない場合、
#WinMainCRTStartup(){ mainCRTStartup();}
#が必要。一般的には、これを#ifdef __CYGWIN__ #endifで挟む
で、フリーでWindowsアプリ作れるのでうれしいなーと思って、じゃあ
205で書いたようなアプリ作れるかな、と思って質問に至ったのです。
205の質問の肝は、このGUIプログラムでexecしようとしているのは
cygwin1.dllが必要であるconsoleアプリなわけですが、この時
どーすんのかいな、という事だったんです。
お答えとしては、「-mno-cygwinつけてもつけなくても、
できたGUI.exeからcygwin1.dll が必要なプログラムでもなんでも
execできる」ということでよろしいでしょうか?
#すばやいレスありがとうございました。
[209:つう (2001/02/22(木) 15:44)]
>>206
つうか、/bin/find が存在していないみたい・・
パッケージどれにはいってるんだっけ?
[210:名無しさん@お腹いっぱい。 (2001/02/22(木) 16:05)]
findutils ぢゃねーの?
[211:名無しさん@お腹いっぱい。 (2001/02/22(木) 16:58)]
shのexecは、UNIXのexecシステムコールを呼んでいるだけ、
自分でやりたければ、execlv()とか(だっけ?忘れた)をCから呼ぶ。
sh.exeはいらないけど、cygwin1.dllは要る(と思う)。
従って、-mno-cygwinはだめ。
ということでいいかな?
でも、
system("start c:\\cygwin\\sh.exe -c /local/bin/hoge.exe");
exit(0);
とかやれば、ネイティブアプリからcygwinアプリを起動することはできるはず。
[212:名無しさん@お腹いっぱい。 (2001/02/22(木) 17:01)]
system("start c:\\cygwin\\bin\\sh.exe -c /usr/local/bin/hoge.exe");
の間違いです。すまそ。
[213:名無しさん@お腹いっぱい。 (2001/02/22(木) 17:17)]
試したけど、うまくいかなかった。すまそ。
system("start c:\\cygwin\\bin\\bash --login -c /usr/local/bin/hoge.exe");
ならうまくいくと思う。多分。
[214:名無しさん@お腹いっぱい。 (2001/02/22(木) 17:19)]
c:\\cygwin\\bin\\bash.exe だ。たびたびすまぬ。
[215:205 (2001/02/22(木) 17:57)]
>>211
どうも長いレスありがとうございます。
fork/exec*系統を使うには-mno-cygwinは使えないってことですね。
systemの例ありがとうございます。私の方でもちょっとテストしてみました。
systemではないですけど popen使って試してみました。
popen("ls.exe -l","r")の出力を出すコンソールプログラムです。
これをgccの-mno-cygwinでコンパイルしてみました。すると、
(1)cygwinのshプロンプトの上
動作:cygwinのls -lの結果が出力
(2)MS-DOSプロンプトの上
動作: パスが通っているUnix-Like-tool のls -lの結果が出力
(3)MS-DOSプロンプトの上、パスは殺す(Windows/commandのみ)
動作:「コマンドまたはファイル名が違います」
(4)MS-DOSプロンプトの上、パスは殺す。作業ディレクトリにcygwinの
ls.exeとcygwin1.dllをコピー。
動作:cygwinのls -lの結果が出力
execを選んでcygwinにするか、なんとかpopenに納めてMingwにするか、
ってとこですかね。ふうむ。興味深い。
[216:名無しさん@お腹いっぱい。 (2001/02/23(金) 10:48)]
>>215
windows.hをインクルードしてるなら、CreateProcess()とか使えませんか?
あと、起動するプロセスの標準入出力をWindowsのパイプでつなぐ方法と、
Windowsのファイル/パイプのハンドルをFILE*やファイルディスクリプタに
マッピングするAPIもあったはず(うろ覚え)。
read.cgi ver5.26+ (01/10/21-)