| レス数が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
で挟んで解決しました。
read.cgi ver5.26+ (01/10/21-)