■掲示板に戻る■ 1- 最新10

レス数が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もあったはず(うろ覚え)。


次10 前10 最新10
NAME:MAIL:

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