1 名前:名無し募集中。。。 [05/01/15 02:18:37] UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 前スレ Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/ Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/ Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/ Part1 pc2.2ch.net/tech/kako/992/992057422.html Part3のミラー makimo.to/2ch/pc5_tech/1085/1085930894.html Part2のミラー makimo.to/2ch/pc5_tech/1055/1055110889.html 関連スレ Cygwin使っている人いますか? その13 (UNIX板) pc5.2ch.net/test/read.cgi/unix/1099157755/ Cygwin使っている人いますか? 3 (Windows板) pc5.2ch.net/test/read.cgi/win/1090131123/ 関連板 pc5.2ch.net/unix/ pc5.2ch.net/linux/
29 名前:デフォルトの名無しさん mailto:sage [05/02/04 12:43:16 ] >>28 ・使えるんじゃない? ・そうとは思わないけど。
30 名前:デフォルトの名無しさん mailto:sage [05/02/04 16:48:48 ] >>28 POSIX見れ。
31 名前:デフォルトの名無しさん mailto:sage [05/02/04 18:47:12 ] >>30 POSIXに準拠してないOSがあったりするのがUNIXの難しさなのではないですか?
32 名前:デフォルトの名無しさん mailto:sage [05/02/04 19:12:34 ] >>31 いまあるメジャーなUNIXでPOSIXのIPCが使えないのってどれ?
33 名前:デフォルトの名無しさん mailto:sage [05/02/04 19:23:40 ] >>32 それが分らないから質問してるんですけど。
34 名前:デフォルトの名無しさん mailto:sage [05/02/04 20:10:02 ] >>33 そんなのあるのか? って話だと思うけど。 31があると断言しちゃってるけど実際どれよ、FUDじゃねえの? って話じゃないかと。 APUE見りゃちゃんとPOSIXとSysVとBSDで事情がある場合はちゃんと断りがあって、 その上でIPCの機能の記述が通じない「メジャーなUNIX」って一体何を想定してるのか。 元質問者の無知はしょうがないとしても31はちゃんと明確に指摘すべきだろ。
35 名前:デフォルトの名無しさん mailto:sage [05/02/04 21:24:26 ] >>34 あんまり厳密な話をしてるつもりはなったのですが、 例えば、GLIBC-2.3.4には>>2 にあるPOSIXのドキュメントに載っている (www.opengroup.org/onlinepubs/009695399/idx/head.html ) <trace.h>がなかったりします。こんな感じで微妙に基準を満たしてなかったり とかするのかなと思ってました。手元にはLinuxしかないので、 *BSDや商用UNIXのことは分りません。
36 名前:デフォルトの名無しさん mailto:sage [05/02/04 21:36:50 ] すべてのUNIXで動作するコードを書きたいだけなのか?
37 名前:デフォルトの名無しさん mailto:sage [05/02/04 21:45:02 ] >>36 そういうわけではないですけど、何らかの現実的なガイドライン みたいなのがあれば、それを知りたいなあと思っただけです。 本来ならコード読んで体得するべきで怠けているだけなのは分ってます。
38 名前:デフォルトの名無しさん mailto:sage [05/02/05 01:21:14 ] System V IPCがないUNIXがあったら俺の所へ持ってこい!
39 名前:デフォルトの名無しさん [05/02/05 07:29:32 ] アホな質問なんですが、 APUEの10.7,10.8のサンプルコードってちゃんと動きますか? Linux2.6では期待した通りには動きません。 straceで見ると、 readシステムコール中にシグナルが発生しても 普通にreadに戻るだけなんです。
40 名前:デフォルトの名無しさん [05/02/05 07:31:19 ] LinuxはLinux Is Not UniXの略だからなぁ。
41 名前:デフォルトの名無しさん mailto:sage [05/02/05 07:40:35 ] #include<signal.h> #include<unistd.h> static void func(){return;} int main(){ int n=0; char line[256]; signal(SIGALRM,func); alarm(10); n=read(0,line,256); alarm(0); write(1,line,n); } $strace ./a.out ... rt_sigaction(SIGALRM, {0x8048424, [ALRM], SA_RESTORER|SA_RESTART, 0x40046678}, {SIG_DFL}, 8) = 0 alarm(10) = 0 read(0, 0xbffff980, 256) = ? ERESTARTSYS (To be restarted) --- SIGALRM (Alarm clock) @ 0 (0) --- sigreturn() = ? (mask now [RTMIN]) read(0, select使えばいいんだろうけど。
42 名前:デフォルトの名無しさん mailto:sage [05/02/05 08:12:12 ] >>41 ソースの先頭で #define _XOPEN_SOURCE
43 名前:デフォルトの名無しさん mailto:sage [05/02/05 08:26:07 ] >>42 ありがとうございます。 rt_sigaction(SIGALRM, {0x8048434, [], SA_RESTORER|SA_INTERRUPT|SA_NOMASK|SA_ONESHOT, 0x40046678}, {SIG_DFL}, 8) = 0 >>41 と違ってrt_sigactionの引数としてSA_RESTARTの代わりにSA_INTERRUPTが入ってますね。
44 名前:デフォルトの名無しさん mailto:sage [05/02/05 09:29:35 ] 10.12のようにsigaction()でstruct sigactionのsa_flagsに フラグをきっちり指定してやるのが正しいということですな。 signal()のデフォルトの動作はSysV,4.3BSDはINTERRUCT、 SunOS,LinuxはRESTARTということですな。 お騒がせしました。
45 名前:デフォルトの名無しさん mailto:sage [05/02/06 00:07:47 ] 4.xBSDが、restartable system callのご先祖様です。
46 名前:デフォルトの名無しさん mailto:sage [05/02/06 03:52:38 ] >>45 なるほどそうなんですか。 でも、restartable system callを一番最初に実装したのが4.xBSDだとしても、 ここでの、互換性の話を含むsignalの挙動の話はまた別のですよね? そもそも上のようなケースがあるから、UNIXではsignal()はもう使うべきではないですね。 マルチプロセスを想定していない、ANSI C特有の関数としてのsignal(),raise()とみなす べきなのでしょう。UNIXではsigaction(),kill()が正しい。
47 名前:42=45 mailto:sage [05/02/06 09:53:05 ] glibc$ man 2 signal (略) Trying to change the semantics of this call using defines and includes is not a good idea. It is better to avoid signal altogether, and use sigaction(2) instead. signal(2)だけじゃ扱いきれないことが多いですからね。 4.2BSDの頃にはこういう常識が形成されていたと思います。 今手元にないんですが、stevensの"Advanced"にも書いてあったと思います。
48 名前:デフォルトの名無しさん [05/02/08 13:20:03 ] sagarisugi
49 名前:デフォルトの名無しさん [05/02/08 15:18:19 ] XTIの方がUNIXのインターフェイスらすいと思うのですが、 これってもう誰も使ってないんですか?
50 名前:デフォルトの名無しさん [05/02/08 15:57:05 ] らすい?
51 名前:デフォルトの名無しさん [05/02/08 22:40:00 ] pthread使ってるからpopen()とか使うな、っつってるのに使いやがったアホ(上司と同義)のために、 「こう書き換えろう゛ぉけっ!」とアドバイスしたいのですが、どういう書き換え方があるでしょうか?
52 名前:デフォルトの名無しさん mailto:sage [05/02/08 22:45:01 ] 上司を部下に書き換えるとか、勤務先を書き換えるとか
53 名前:デフォルトの名無しさん [05/02/08 22:50:45 ] マジレス希望です。
54 名前:デフォルトの名無しさん mailto:sage [05/02/09 00:02:05 ] 私は popen 使うならシェルからパイプ使えと思う人です
55 名前:デフォルトの名無しさん [05/02/09 01:06:27 ] プロセスを走らせながらDLLって書き換えられますでしょうか。。。 dlopen()等でそういった書き換えが考慮されていないプロセスです。
56 名前:デフォルトの名無しさん mailto:sage [05/02/09 09:06:47 ] 書き換えるのはできないけど、入れ換えるのはできるぞ。 cp libhoge.so /usr/lib/libhoge.so.tmp mv /usr/lib/libhoge.so.tmp /usr/lib/libhoge.so
57 名前:デフォルトの名無しさん mailto:sage [05/02/09 12:19:18 ] 入れ替えられても元のdllはロードされたままの罠。
58 名前:デフォルトの名無しさん mailto:sage [05/02/09 12:25:32 ] 無理やりmunmapしてしまうとか。
59 名前:デフォルトの名無しさん mailto:sage [05/02/09 15:02:15 ] dllゆーな。
60 名前:デフォルトの名無しさん mailto:sage [05/02/09 20:21:36 ] dllって言う奴はWin上がり
61 名前:デフォルトの名無しさん mailto:sage [05/02/09 21:54:41 ] UNIXerはなんて言うの?
62 名前:デフォルトの名無しさん mailto:sage [05/02/09 21:56:50 ] そ。
63 名前:デフォルトの名無しさん mailto:sage [05/02/09 21:58:00 ] さ。
64 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:37:10 ] どるる。
65 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:39:12 ] どるるゆーな。
66 名前:デフォルトの名無しさん [05/02/10 00:03:50 ] >>56 やっぱ無理ですか。どうもでした。 ちなみにdllってWin用語ですか!?たまたま拡張子がDLLなだけでしょ。
67 名前:デフォルトの名無しさん mailto:sage [05/02/10 00:15:11 ] そ。
68 名前:デフォルトの名無しさん mailto:sage [05/02/10 00:28:17 ] >>66 なこといっても、dymamic loadable libararyとは言わないもん。 shared libraryだな。
69 名前:デフォルトの名無しさん mailto:sage [05/02/10 00:35:06 ] 同じというならWindowsのDLL作るのってなんであんなに面倒くさいかね。
70 名前:デフォルトの名無しさん mailto:sage [05/02/10 00:38:03 ] 誰が同じって言ったんだろう
71 名前:デフォルトの名無しさん mailto:sage [05/02/10 00:55:21 ] どるるワラタ >>68 確か dynamic link library の略だったような。 なぜか soopen() じゃなくて dlopen() だなあ。
72 名前:デフォルトの名無しさん mailto:sage [05/02/10 14:18:26 ] >>71 shareされるかどうかの観点 -> so dynamicにロードされるかどうかの観点 -> dl(l)
73 名前:デフォルトの名無しさん [05/02/10 17:04:50 ] >>72 惜しい
74 名前:デフォルトの名無しさん mailto:sage [05/02/10 17:12:06 ] >>49 W=リチャード(故)の「UNIXネットワークプログラミング」8000円に XTIのページが100ページぐらいあって 泣きたくなった まじでいらん。金その分返せと
75 名前:デフォルトの名無しさん mailto:sage [05/02/10 17:34:03 ] >>71 dlopenはもともと別のAPIですから。
76 名前:デフォルトの名無しさん [05/02/11 21:26:59 ] perrorを呼んだ後はerrnoの値って変わっちゃうの? printfは何度呼んでも変わらないようだけど。 int main(void) { errno = ETIMEDOUT; printf("errno: %d \n", errno); perror("perror"); printf("errno: %d \n", errno); return 0; } errno: 2 perror: No such file or directory errno: 29
77 名前:デフォルトの名無しさん mailto:sage [05/02/11 21:33:20 ] そういうもんです
78 名前:デフォルトの名無しさん [05/02/11 23:16:43 ] FreeBSDでは変わらんけど。 29ってなんだ?
79 名前:デフォルトの名無しさん mailto:sage [05/02/11 23:56:23 ] 変らないのはたまたま。 後で利用したければ、保存しなさい。
80 名前:デフォルトの名無しさん mailto:sage [05/02/12 00:11:46 ] >>76 perrorが標準エラーに出力するってことは、最終的にwrite(2)が 呼ばれるわけだから、どのみちerrnoが上書きされる可能性がある。 もし、errnoを保存してたとすると、write(2)が失敗した場合のerrnoを 取得できなくなってしまう(可能性も必要性も低いけど)。 こう考えれば納得できるんじゃないかな?
81 名前:76 mailto:sage [05/02/12 00:38:18 ] >>80 なるほどわかりますた… あと>>76 のETIMEDOUT→ENOENTですた、スマソ まぁ何でもいいんですが。
82 名前:デフォルトの名無しさん [05/02/12 21:15:07 ] >>51 popen()はスレッドセーフだよな?何故使ったらダメなんだ?
83 名前:デフォルトの名無しさん [05/02/12 21:25:23 ] pthreadの動作を実際に見せてやれ。 おまいはできる部下だ
84 名前:デフォルトの名無しさん [05/02/12 21:27:20 ] >74 本買う前に目録ぐらい見なよ
85 名前:デフォルトの名無しさん [05/02/12 22:31:57 ] >>84 ビニールの帯でくくってあってさぁ・・・
86 名前:デフォルトの名無しさん mailto:sage [05/02/12 22:34:47 ] >85 何のために常時接続してんだか…
87 名前:デフォルトの名無しさん [05/02/17 02:45:26 ] コマンドを実行してそれを返り値にして渡したいのですが どのような方法があるでしょうか? 具体的には ls -1 *.jpg の結果が欲しいのです すいませんがよろしくおねがいします
88 名前:デフォルトの名無しさん [05/02/17 02:52:40 ] 「返り値にして渡したい」の意味が正確には把握できませんが、 return system("ls -1 *.jpg"); ってことですか? それとも、 FILE *f = popen("ls -1 *.jpg", "r"); // fから読む ってことでしょうか?
89 名前:デフォルトの名無しさん mailto:sage [05/02/17 04:16:35 ] 呼び側で、引数それぞれにつき、BUFSIZぶん確保。 返り値は、エラーの有無。 おもしろかった。 int hoge(char *cmd, char *b) { FILE *fp; int ret; cmd[strlen(cmd) - 1] = '\0'; /* 改行がくっついてる、と、仮定 */ printf("cmd: %s\n", cmd); if ((fp = (popen(cmd, "r"))) == NULL) { perror("popen"); return (1); } if ((ret = fread(b, 1, BUFSIZ, fp)) < 1) { printf("no output from \"%s\"\n", cmd); } else if (ret < 0) { perror("fread"); pclose(fp); return (1); } pclose(fp); return (0); }
90 名前:デフォルトの名無しさん mailto:sage [05/02/17 04:42:42 ] ??ちょとまずかった?? if ((ret = (fread(b, 1, BUFSIZ, fp))) < 1) { fprintf(stderr, "no output from \"%s\"\n", cmd); if (ferror(fp)) { perror("fread"); pclose(fp); return (1); } } ...すみません。もうやめます。
91 名前:デフォルトの名無しさん mailto:sage [05/02/17 06:11:03 ] どうしてUNIX厨のソースはこんな醜いんだろう
92 名前:デフォルトの名無しさん [05/02/17 07:40:22 ] それがUNIXクオリティ
93 名前:デフォルトの名無しさん [05/02/17 12:54:54 ] >>91 それは厨だからさ。
94 名前:デフォルトの名無しさん mailto:sage [05/02/17 13:22:01 ] >>91 お前のレベルが低いだけだろ
95 名前:デフォルトの名無しさん [05/02/17 13:56:20 ] すみません。よろしければ教えてください。 mailxでメールを送信する際に 添付ファイルをつけて送信することは可能なのでしょうか? どこぞやにUNIXじゃ添付できないって書いてあったんですけれども もしできそうならおしえていただけますでしょうか?
96 名前:デフォルトの名無しさん mailto:sage [05/02/17 13:57:04 ] 帰れ
97 名前:デフォルトの名無しさん [05/02/17 13:58:42 ] >>95 板違い
98 名前:デフォルトの名無しさん mailto:sage [05/02/17 13:59:16 ] あらら、答えられないなら黙ってればいいのにw UNIX厨っていつも余計な事するよね
99 名前:95 [05/02/17 14:04:38 ] もうしわけないです、どこの質問すればいいですか? 誘導願いしますw UNIXの環境上からmailxで添付ファイルの送り方 があればききたいのですけれども
100 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:05:32 ] なんでマニュアル読まないの?
101 名前:デフォルトの名無しさん [05/02/17 14:06:43 ] マジレスすると $ man mailx
102 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:08:06 ] $ man ko
103 名前:95 [05/02/17 14:08:38 ] manなんてインストールしてません おねがいします 教えてください
104 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:10:09 ] マニュアル熟読しないと使えない時点で糞だよね UNIXなんて捨てたら?
105 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:11:45 ] man入れてないんだったらオンラインマニュアルでもなんでもあるだろが 考えろよ
106 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:13:13 ] つーかおまえがmanなんて見ても参考にならねーと思う あきらめろ
107 名前:95 mailto:sage [05/02/17 14:14:06 ] ばーか
108 名前:デフォルトの名無しさん [05/02/17 14:14:20 ] ここはプログラミングのスレであって、ツールの使い方のスレではない。
109 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:15:16 ] シグナルってシグナルハンドラからすぐにリターンしないとだめ? そのまま延々と処理を続けてもいい?
110 名前:95 mailto:sage [05/02/17 14:15:25 ] なんだかんだと言い訳ばっかでつかえねーやつら。 氏んだらいいと思うよ。
111 名前:104 mailto:sage [05/02/17 14:15:27 ] はいはいそうですね そのとうりです だからもうUNIXと言う文字があるところにはかかわらなくていいですよ じゃぁね ばいばい
112 名前:デフォルトの名無しさん [05/02/17 14:16:37 ] いやでも、 UNIXで挫折って、わかる気がするなあ。 ずっと意味不明なコマンドの文字列打ってたら頭おかしくなりそうだし、 ずっと真っ暗なコンソール眺めてると鬱になりそうじゃん? かといって思想のまるでないXは、オタ絵とただ沢山コンソール開くしか脳ないし、 こんなの与えても娯楽を常に要求する一般人は見向きもしない。 そもそもWebでしか見掛けない、哀れなOS、というのが一般人の見解だし。 そうそう、最近LindowsがUNIXの印象かなり悪くしたよね。 この事件でUNIXはビジネスで成功できないことがまた証明されてしまったわけだ。 昔からUNIXは関係者同士で常に足を引っ張って成長しない。 お金の匂いしないよね。全然。 そんなOSだから、挫折が常態であるのは必然なんだと思う。
113 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:18:01 ] >>109 いいよ Xのメセージは全部シグナルだし
114 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:25:17 ] 元95です。偽者発生してもうきけるふんいきじゃないですね。残念です。 man 英語だったんでうーんって感じだったんですけど あとSHELLからコマンドで毎日定時に送るようにしたかったんですけど、 まあがんばって訳してみます。 結果あらしてすみませんw
115 名前:デフォルトの名無しさん [05/02/17 14:33:24 ] ここは役立たずの巣窟
116 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:36:52 ] 95は何を使ってるんだ? 話はそれからだ
117 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:45:51 ] オソル オソル キイテミル 現在実行中のプロセスが「自分自身」の絶対パスを知る方法ってありますか? 適当な path がとおってる環境下で、$ hoge <arguments...> とやったときに、 そのプログラムのなかで、hoge が /usr/bin/hoge なのか /usr/local/bin/hoge なのかを知る方法でつ。 argv[0] を拾っても、上記の例だと hoge が得られるだけだし・・・
118 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:53:28 ] >>117 Linux なら自身のpidを取得して/proc/pid/exe辺りを見ればいいんだけど。 man 5 proc で説明でると思う。他のOSの場合どうするのかは知らん。
119 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:55:34 ] >>117 普通に考えると、ない。
120 名前:114 mailto:sage [05/02/17 15:40:39 ] SunのSolaris 8です これでこたえなってます?
121 名前:デフォルトの名無しさん mailto:sage [05/02/17 15:42:08 ] >>118 ほんとUNIXって使えないね
122 名前:デフォルトの名無しさん mailto:sage [05/02/17 16:03:21 ] >>114 だから、ここはプログラミング質問スレなんだから プログラムの使い方を聞くなってば。
123 名前:デフォルトの名無しさん mailto:sage [05/02/17 16:09:39 ] >>111 >そのとうりです とうり?
124 名前:デフォルトの名無しさん mailto:sage [05/02/17 16:33:36 ] >>118 ありがd 調べてみまつ。 >>119 確かに >>118 さんに教えて頂いた方法は「普通」の方法っぽくはないですね。 もっと簡単に出来そうなんだけど・・・ 以下のような動作するコマンドって、珍しいものですか? usage: hoge (-f <conf file>) -f で設定ファイルが指定されればそのファイルを使うけど、オプション指定なしで起動された 場合は、hoge 自身が置かれているディレクトリ直下の conf file を使います(default)。 みたいな・・・
125 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:25:45 ] >>95 氏は自分のやりたいことが分かっていないんじゃないかな。 ここで聞くより mailx と MIME でググると少しは幸せになったのに。
126 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:25:45 ] >>117 確実に(どんな場合でも)取得する方法はない。 起動後にchroot(2)してたらパスが存在しないことすらありえるし。
127 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:44:02 ] >>124 「hoge 自身が置かれているディレクトリ直下の……」というようなことは 「しない」っていうのがUNIXでの流儀なんですよ。 デフォルトのパスは定数として埋め込むのが安全です。
128 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:47:50 ] >>124 >>127 さんの言う通りじゃ。どこぞのOSの悪い習慣は捨てなされ。 いくつか流派があるが、GNU流の設定ファイルの置き場のお作法はこうじゃ ttp://www.sra.co.jp/wingnut/standards/standards-ja_7.html#SEC54
129 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:17:03 ] >>128 そんなに悪いものかな? まあ、郷に入りては郷に従え、と。