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

レス数が950を超えています。1000を超えると表示できなくなるよ。

cygwin使っている人いますか?

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


[217:215 (2001/02/23(金) 16:58)]
どうもありがとうございます。もうちょい勉強&実験して
質問を明確にしてからまた聞きに来ます。


[218:名無しさん@お腹いっぱい。 (2001/02/24(土) 07:19)]
Windows版のDiaで日本語入力出来るようにした人っていないですかね。
ものすげぇくれくれ君だし、cygwinの話題でもないけど(汗)。
でも自分でやれるほど技術力ないし。


[219:名無しさん@お腹いっぱい。 (2001/02/27(火) 17:25)]
cygwinであるunixアプリケーションをbuildしているのですが、どうしても
libcygipc.aをリンクしてくれません。shmget, shmat, shmdt, shmctlが
undefinedだよと報告されます。

lcygipc以外に気を付ける事はありますか?なお、リンクのコマンドは

c++ -o hoge hoge.o -lcygipc -L. -lhoge ...

ですがこれが問題あるでしょうか?なんだかまったく原因がわかりません。


[220:219 (2001/02/27(火) 18:31)]
>219事故解決しました。
まさかcygutils..cygipcではg++のためのリンケージ指定していないとは
思いませんでした。headerの適当なところを

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif
で挟んで解決しました。


次10 前10 最新10
NAME:MAIL:

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