1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ] UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 過去スレ(プログラム技術板) Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/ Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/ 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使っている人いますか? その14 (UNIX板) pc8.2ch.net/test/read.cgi/unix/1107587275/ Cygwin使っている人いますか? 3 (Windows板) pc8.2ch.net/test/read.cgi/win/1090131123/ 関連板 Linux板 pc8.2ch.net/linux/ プログラム技術板 pc8.2ch.net/tech/
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/09(木) 01:40:40 ] プログラミングからは少し外れますが・・・ HogeHugaはキャメルケースって言いますが、hoge_hugaは何と言うのですか?
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/09(木) 12:56:25 ] >>492 パスカル
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 16:28:13 ] >>492 snake case
495 名前:名無しさん@お腹いっぱい。 [2009/04/24(金) 07:19:05 ] underscore styleというのもどっかで見たような気がしなくもない
496 名前:名無しさん@お腹いっぱい。 [2009/04/25(土) 12:15:33 ] PF_UNIX/SOCK_DGRAMにデータを送る時、FreeBSDでは 送り元が無名になってしまい、受け取った側が 返答を送り返すことができない。(PF_INETだともちろんソースポートが付くが) だから、間に合わせのファイル名をbindしてから送信する必要あり。 あとでunlinkしないと行けないし、美しくない。 Linuxだと、PF_UNIX/SOCK_DGRAMでも、bindしなくても 勝手に名前を割り当ててくれて、不要なソケットファイルも作成されないんだが、 そういうことはできないの?
497 名前:名無しさん@お腹いっぱい。 [2009/05/02(土) 13:06:49 ] C++のtemplateで、templateの展開先を限定することってできますか? template <class T> void func(T arg) { // argが HOGE型またはFOO型の場合の処理 } template <class T> void func(T arg) { // argが BOKE型またはHAGE型の場合の処理 } みたいなことをやりたいのです。関数名は func()で同名にしたいのです。 たとえば、template <class T={HOGE,FOO}> みたいなことが実現できませんか?
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 13:57:48 ] >>497 template <class T> void funcHOGEFOO(T arg) { // argが HOGE型またはFOO型の場合の処理 } template <class T> void funcBOKEHAGE(T arg) { // argが BOKE型またはHAGE型の場合の処理 } void func(HOGE arg) { funcHOGEFOO(arg); } void func(FOO arg) { funcHOGEFOO(arg); } void func(BOKE arg) { funcBOKEHAGE(arg); } void func(HAGE arg) { funcBOKEHAGE(arg); }
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 14:01:28 ] >>498 だから、そうは書きたくないので、 templateを使って奇麗にまとめる方法を質問してるんですが。。 他にわかる方お願いします ↓
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 14:53:03 ] 何が不満なのか言えよ。 どうしても template だけのコードにしたいんなら、 boost の enable_if に is_same とか突っ込んで使えばいいかもしれない。
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 16:53:57 ] >>498 の方法では、func()の一方のargの型の種類が不定の時対応不能。 つまり、 片方の func() は argが HOGE型またはFOO型の場合 もう片方の func() は argが「HOGE型またはFOO型」以外の場合すべて だったとしたらどうする?
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:06:02 ] >>501 template <class T> void funcHOGEFOO(T arg) { // argが HOGE型またはFOO型の場合の処理 } template <class T> void func(T arg) { // argが「HOGE型またはFOO型」以外の場合すべて } template<> void func(HOGE arg) { funcHOGEFOO(arg); } template<> void func(FOO arg) { funcHOGEFOO(arg); }
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:13:52 ] >>502 「HOGE型またはFOO型」というのが、2種類だけじゃなくて10種類くらいあったら template本体以外に void func(HOGE arg) とかを全部列挙するのが すごくダサイんですが。 あと、本来の関数名以外に funcHOGEFOO()という関数名をつけなければいけないのも 名前がぶつかるかも知れないし美しくない。
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:18:14 ] なんで人にコード書かせて後から条件増やして文句つけるの? そういう遊びなの? アホなの?
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:19:35 ] >>503 何がしたいのかわからんが、ごちゃごちゃ言わずにさっさと boost::enable_if で好きに片付けろよ。
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:21:22 ] アホなんだろ。
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 00:15:37 ] どうしてこんなことに
508 名前:名無しさん@お腹いっぱい。 [2009/05/03(日) 10:24:12 ] 同じコードが、Cだとコンパイルできるけど、 C++だとエラーになる。 struct A { int i, j; }; void hoge() { struct A a = { .i = 123, .j = 456 }; } 構造体を初期化したいのだが、メンバーの順序を気にしなくていいように メンバー名指定で初期化したい。 A a = {123, 456}; にすればC++でもOKになるけど、これだとメンバーの順序が変わった時困るから、 .i = や .j = の指定を入れたいのだが。 わかる方お願いします。
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 12:33:58 ] CでもC99じゃないとダメじゃないの?それ
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 13:03:34 ] C++だったら普通コンストラクタ
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 13:10:29 ] >>510 コンストラクタにしても、メンバの順序(コンストラクタの引数の順序)を考えなくて いいように >>508 の要求を満たすことはできないのでは? メンバの型が違えば方法はあるけど、型が同じならできないでしょ。
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 13:51:41 ] >>510 コンストラクタだと実行時に「代入」されるからプログラム的に無駄でしょ。 「代入」じゃなくて、静的データで初期化したい。 あるいはテーブルのようなconstデータを持ちたい場合、 コンストラクタじゃなくて「初期化宣言」したい。
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 14:37:22 ] >>512 がオート変数の初期化を、「代入」以外の方法(静的データ?)で行う、 画期的に効率的な方法を開発したようです。
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 14:54:15 ] >>513 >>508 では確かに auto変数だが、 関数外に const static で持ちたい場合もあるしね。 そういう場合、struct member指定で順不同で初期化するのはどうするのかね? やっぱ C++じゃ無理なのかい?
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:14:47 ] なんかさー、そこまでこだわるなら struct A a; a.i = 123; a.j = 456; でいいじゃんって感じ。 元々auto構造体変数のメンバ初期化自体邪道だったんだし。
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:23:57 ] >>515 すでに指摘されてるように、それだと「代入」。 質問は「初期化」の方法。 auto変数じゃなくて、staticの時、どうするよ?
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:30:14 ] C++の規格上出来ないんだから、どうしてもやりたいならC99で記述してリンクすればいい。
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:34:57 ] なんだ、できないのか。しょぼいな。
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 17:59:22 ] コンストラクタ的にしとかないとメンバ変数増えたときに困りそうだけど。
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 23:59:36 ] >>519 まあこんなしょうもないところにこだわる人にそんなことが理解できるはずもなく。
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/05(火) 10:21:50 ] そういうエディタ内でのお遊びはム板でやればよろし。 >>517 >>520 で正解でてるからいうこた特に無いけれど それ以前に 基本は「ある仕様を覚えろ」じゃないかと思う。 「書き方」にこだわりがあるなら そのコーディングを無難にコンパイルできるマクロツール作ればいいまでのこと テキストレベルの問題だ。
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/05(火) 14:51:47 ] おいおい、途中から話の噛み合っていないバカ共が増えてるけど 元々の質問は、 「メンバの順序を気にしなくて良いように、メンバ名指定で初期化したい」 例:struct A a = { .i = 123, .j = 456 }; なんだろ? で、傲慢にも「同じコードをC++でも通るようにしたい」と… はっきり言えば>>509 と>>517 が全てで、この書き方だとC99でしか通らず そのままではC++0x準拠のC++コンパイラですら通らないわけだが 何を勘違いしたのか、初期化と代入の区別もついていないバカ共とか Designed Initializersの話してるのに、エディタ内でのお遊びとか言ってるバカが話をややこしくしてる 本当バカって救いようないな、分からないなら黙っていれば良いのに… 似たような疑問をもっていて、たまたまこのスレを訪れた人は、>>509 と>>517 以外の >>508 からここまでのレスは、全くのゴミレスなので読み飛ばしてほしい
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/06(水) 13:33:15 ] X Window Systemのプログラミングの参考になる書籍 で現在も通用するものってどんな者が有りますか? 具体的にはC言語からXlibなどをつかってツールキットを使わずに プログラムを作成する方法を解説した書籍があればお教えください。 tclやgtkやqtの経験は有るのですが、ちょっとしたプログラムを 作るのにあまり重たくしたくないのでC言語で直接利用したく思います。
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 10:40:39 ] >>523 書籍はしらないけれど ttp://xjman.dsl.gr.jp/X11R6/X11/ ttp://www-yano.is.tokushima-u.ac.jp/~mituhara/software_e/ あとりを参考にしてみては?あとめぼしいportsのソースが参考になる。 ただxlibとSDLと使用メモリとか大してかわらんよ。 描画面も考えると xlib→cairo→pango ないしは SDL→cairo→pango とやっていくと軽くて学習効率が高く見栄えのする結果が得られると思う。 それと「コマンドとして呼び出して結果をもらう」とか 「perlやshを呼び出す」事も選択肢に入れるとコードと使用リソースが小さくできる。
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 10:46:27 ] >>524 でcairoを出しているのはxlibだときれいなテキストが書きにくいので freetypeを叩くより楽だからの意味合いが強い。
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 17:08:06 ] >>524-525 ありがとう御座います。 がんばります。SDLはいろんなOSで使えるようですね。 いろいろ勉強してみようと思います。
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 09:35:24 ] >>523 亀レスだがそういう解説書なら Xアプリケーション・プログラミング1 Xlib編 しかし書籍の方が現在では流通していないかも。 どこかの図書館にはあるだろうからその場合は最寄りの図書館で取り寄せてもらって。
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 17:16:58 ] 下図のように自己交差しているリージョンを、 ┏━┓ ┃ ┃ ┗━╋━┓ ┃ ┃ ┗━┛ 交点で個別のリージョンに分けたいんですけど、 ┏━┓ ┃ ┃ ┗━┛┏━┓ ┃ ┃ ┗━┛ 簡便な方法ってないものでしょうか。よろしくお願いします。
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 17:23:20 ] すみません、スレ違だったようです。取り下げます。
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:10:34 ] # ping -c 1 -t 10 www.yahoo.co.jp って実行すれば以下のような結果が表示されると思うのだが PING www.yahoo.co.jp (124.83.139.192) 56(84) bytes of data. 64 bytes from f1.top.vip.ogk.yahoo.co.jp (124.83.139.192): icmp_seq=1 ttl=57 time=9.06 ms --- www.yahoo.co.jp ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 9.068/9.068/9.068/0.000 ms 平均値だけを出力させることってできますか? #ping -c 1 -t 10 www.yahoo.co.jp 9.068 って感じにです。
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:11:25 ] すみません、スレ違だったようです。取り下げます。
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:13:06 ] >>531 勝手に取り下げないで下さい
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:19:19 ] >>530 えっと、そういう機能を持った pingコマンドの別種を自分でプログラムしたい、 って質問だよな? pingのようにICMPを送受信するには、 SOCK_RAWを使ったソケットプログラムが必要だが、 その辺は理解してるのか?
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:26:55 ] 単にパイプで適当なワンライナーにつなげば済む程度の話じゃね?
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:32:39 ] >>534 それだとプログラミングじゃないからやっぱりスレ違い。取り下げなければならない。
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:58:32 ] >>533 muninで出力結果をグラフにしたいだけです
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:01:43 ] >>536 じゃあ、Xのプログラムも必要だな。 ツールキットは何を使う予定?
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:37:33 ] >>537 必要ねぇだろ?嘘教えるなよww
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:40:19 ] ここはプログラミング質問すれだよ。 muninの出力みたいな表示を行なうプログラムを自作したいんだろ? pingのソースを参考にソケットプログラムとXのプログラムが必要だな。
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 13:14:14 ] グラフィックスにXのプログラムはいらないな。 グラフというのが「画像」であるならばcairoを使うのが定番 cairoで作ったコンテキストはファイルとして保存できる他 GDK,xlibのpixbuf、SDLみたいなメモリコンテキストから簡単に扱える。 ImageMagickもいいんだけれどcairoのが良いと思うね、 コマンドプロンプトのコントロールもpipe使ったりsytem使ったりで使うのは有りだから 無理に実装せずpopenとかで呼ぶのも有りだし perlやpythonでの実装という選択肢もある。 で>530 の場合は無理にICMPの使い方をマスターしないで perlの「``」かCのpopenでpingを使ってデータを取って ソートなり平均値を出すという部分をまず作ることが大事なんじゃないかな。 ping部分を作りたかったら別で作ればいいさ。
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 13:34:45 ] >>540 perlを使うと「スクリプティング」 (シェルスクリプトも同様) ここは「プログラミング」 よって、スレ違い。
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 19:03:06 ] >>541 スレ違いじゃないと思うけど。 別に何使ったっていいじゃん、こだわること無い。
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/17(金) 02:10:39 ] アクションゲームプログラミングって本を参考に プログラミングしようと思ってるんですけど ひとつ疑問が、 Directx SDKのバージョンが違うんですけど 最新版でも問題はありませんか?
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/17(金) 08:13:33 ] この板では回答は得られません
545 名前:名無しさん@お腹いっぱい。 [2009/07/18(土) 14:10:53 ] まぁそう言わずに >>543 君には無理
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:14:09 ] >>541 プログラムの意味分かってないね、
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:16:18 ] >>543 ここはUNIX板、最小公倍数はwine使用時のdirectXかSDL+OpenGL アクションゲームは素直にFlashで作った方がいいんじゃない。 アスキーアートでも写真でもいいから とりあえずキャラ画像そろえるのが先決
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:17:58 ] >>541 cairoもImageMagickもperlバインディングもあるけれど Cでの実装は常識の範疇だよ。ちなみに、
549 名前:名無しさん@お腹いっぱい。 [2009/07/21(火) 20:21:55 ] すいませんちょっと質問させてください。 いま、データのインポートをする簡単なプログラムをCで書いているところなのですが、原因のよくわからないエラーが出てしまっています。 このあとfloat型ポインタのpにデータをいれていきたいのですが、何故かfloat *pのコメントアウトを外すと、 unnkoを二回出力したあとセグメンテーションエラーになるのです。コンパイルは通ります。 float *pを米アウトした状態だと普通に動きます。 float型以外の型の変数やポインタを用意しても同じようなエラーがでていまい、これ以上変数を増やせないんです。 開いてるファイルは8kぐらいの大きさだし、変数の数も多いわけではないのでスタックを食いつぶしてるようにも思えません。 誰か間違いに心あたりありませんか? ちなみにosはScientificLinux5.3でコンパイラはGNUの4.1です ↓ソースコードはこちら
550 名前:名無しさん@お腹いっぱい。 [2009/07/21(火) 20:24:24 ] #include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { char *inbuf; int i,j; char c; FILE *fp; //float *p; printf("unnko\n"); if((fp = fopen(argv[1], "r")) == NULL ) { printf("ファイルオープンエラー\n"); exit(EXIT_FAILURE); } printf("unnko\n"); for(i=0;i<126;i++){ if( fgets(inbuf,128,fp)==NULL){ printf("%s Can't read\n",argv[1]); } printf("%s",inbuf); } fclose(fp); printf("\n"); return 0; }
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:30:54 ] >>550 char *inbufがタダのポインタのままで、メモリ確保してないのが原因。 //float *p; のコメントとかコメントアウトについては、 たまたまそれでメモリ配置が変わってたまたま動いたり動かなかったりしてただけ。 正しくは char inbuf[128]; でちゃんとメモリ確保しろ。
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:36:01 ] >>551 早いレスありがとう メモリ確保は既にやった気がするけど夢だったかもしらん。ちょっとやってみる
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:43:13 ] >>551 キターーーーーーーーーー ちゃんと動きました。ほんとありがとう
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:45:10 ] とりえあえず char *inbuf = malloc(128); …fgets(inbuf,128,fp)… と char inbuf[128]; …fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)… の違いが分かるようになるくらいは勉強しなよ。
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:51:54 ] >>554 解決した後に蛇足なこと書くなよ。>>551 の回答者とは別人の人よ。 > …fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)… おいおい、FILE *fp; に対して &fp[0] って意味ないだろ。 (コンパイルすれば単に fp と同じになるにしても) 書きたかったのは &inbuf[0] じゃないのか?
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/23(木) 00:37:06 ] >>530 スレちレス $ ping -c 1 -t 10 host | tail -1 |awk -F/ '{print $5}'
557 名前:名無しさん@お腹いっぱい。 [2009/09/04(金) 00:52:32 ] Linux の RAW ソケットで送信パケットをキャプチャし ないのってどうすんだっけ? どっかのサイトで見たんだ けどキーワードが悪いのか見つからない…。
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 12:09:44 ] libpcap使いなさい。
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 12:13:41 ] すみませんが詳しい方のみ回答をお願いします
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 18:21:06 ] 回答まだでしょうか?急ぎです。
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 19:31:34 ] みんな自分が詳しくないということを自覚しているから何も 言わないコトにしたんだと思うよ。(ということにしておく)
562 名前:557 mailto:sage [2009/09/05(土) 00:33:12 ] >>560 > 回答まだでしょうか?急ぎです。 実際急ぎだったんだがお前は俺じゃないだろ(w キーワードは PACKET_OUTGOING だった。
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/10(木) 20:16:00 ] >>560 出てこいよ池沼
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/21(月) 18:30:40 ] すみませんが詳しい方のみ回答をお願いします
565 名前:名無しさん@お腹いっぱい。 [2009/09/22(火) 21:06:47 ] libhoge.so.* という共有ライブラリがあった時、 gcc -o prog prog.c -lhoge ってやると、progから libhoge.so.*に動的リンク(lddで確認)されますが、 prog.cで、実際にはlibhoge.so.*の関数をひとつも使っていなくても 動的リンクされた状態でコンパイルされてしまいます。 一方、libhoge.aという静的ライブラリがあって、 gcc -o prog prog.c libhoge.a ってやったような場合は、prog.cの中でlibhoge.aの関数をひとつも使っていなければ、 libhoge.aの中身は使われず、libhoge.aを付けずに gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、 無駄になりません。 動的リンクの場合でも、関数を使っていないなら、 -lhoge を付けても結果的には動的リンクしないバイナリが作成されるように できませんか?
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 22:53:19 ] 使ってないなら -lhogeつけなきゃいいのに
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:05:07 ] >>566 じゃなくて、使うかどうかわからない場合でも、 -lhogeとか付けておいて、実際に使われなかったらリンクしないようにしたいんだが。 (別の関数から間接的に呼び出されたりして、ライブラリの関数を使ってるかどうか 簡単には判断できないことがある) 静的ライブラリ(libhoge.a)なら可能なのに、 動的ライブラリの場合のみ不可能なのは納得いかないんだが。 ldが、本当に関数を使ってるかどうかチェックするのをさぼってるとしか 思えないんだが、これバグじゃないの?
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:33:53 ] 何でバグって思うのか分からない。わざわざ -lhoge を付けてるのに 付けてないことにしてほしい、って方がワガママでしょ
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:35:59 ] 気に入らなくても、ldはそのように作られているのだから、不要なライブラリを リンクしないようにするしかない。
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:41:42 ] >>569 じゃあ、なぜ ldはそのように作られたのか? 関数を(というかシンボルを)使ってるかどうかのチェックぐらい、 簡単にできそうなのになぜしないのか?
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:41:52 ] >>567 実行時までシンボル解決出来ないんだから、そのライブラリが 本当に呼び出されないかどうかは ld にも分からないんだよ。 だから ld は悪くない。
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:46:17 ] >>567 そんなことはない。 「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge .. みたいなエラーが出るから、コンパイル時にも判断できるはず。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:47:04 ] >>571 そんなことはない。 「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge .. みたいなエラーが出るから、コンパイル時にも判断できるはず。
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:51:29 ] >>571 とりあえず、コンパイル時の判断で不要と思われるライブラリは (動的)リンクしないのをldのデフォルトにしておいて、 コンパイル時のシンボルレベルの判断では使っていないように見えて、 実際には実行時に使われるような特殊なライブラリの場合のみ、 --force-link みたいなオプションを新設して強制リンクさせればいいだろ。 デフォルトではシンボルを使ってなければリンクしないことにして。
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:54:54 ] バイナリパッケージでインストールされたコマンドとか見てると、 実際には使ってない動的ライブラリがリンクされてたりするね。 (C++とかXの関係のライブラリにそういうのが多い) そのソースのMakefileから、-lxxx を外してもコンパイルできたりする。 これって無駄だし、ldが適切にリンク判断してれば もっと効率の良いバイナリができていたはずなのに。
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:56:33 ] リ1「こいつ使ってないライブラリをリンクしようとしてるぜ」 リ2「あちゃー、何だそれ」 リ1「でもわざわざ余計な事をするんだから何か考えがあるんだろう」 リ2「リンクする必要が無いなら最初から省けば良いからな」 リ1「仕方が無い、面倒くさいけどリンクしてやるか」 リ2「これでバグとか言われたら最悪だな」
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:00:37 ] >>576 同じソースでも環境によってライブラリが必要だったり不要だったりする場合がある。 そういう場合、共通ソースでは念のため -laaa が付けられている。 リンカーが「使ってないライブラリをリンクしようとしてる」と判断できるなら それをリンクしないようにするべき。
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:01:28 ] >>573 それはライブラリが足りない場合だろ。 ちゃんと場合分けして考えようぜ。 シンボルが呼び出されないかどうかは保証出来ないんだよ。 別の動的ライブラリから呼び出されるかもしれないし、 動的ライブラリは差し替え可能だから何でもありだ。 ツールは人間様の指示を無視する事は出来無いの。
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:02:19 ] >>576 それと同じ理屈を libxxx.a に適用すると論理破綻。
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:05:06 ] >>578 だから「保証はしなくてよい」 ldのデフォルト動作として、リンクしないようにして、 それでまずい場合(レアケース)のみ、--force-linkみたいなオプションで 強制リンクすればいいだけ。 実際、知らず知らずのうちに使ってるバイナリが 不要なライブラリをリンクしてるんだよ。 ldの動作をちょっと改良するだけで、 それらがすべて改善できるだろ。
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:07:46 ] >>579 動的と政敵の違いを考えることが無いお前の頭の中が破綻してる。
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:08:33 ] >>573 ・それは、ライブラリが足りてない事がわかる事を意味していて、 ライブラリが余分だという事は意味してないよな。 ・ldがそのようなライブラリをリンクしないと、dlsym(NULL, ...)が困るかもしれない。
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:09:13 ] >>578 場合わけじゃない。同じ場合だ。 「ライブラリが足りない場合」ではない場合はリンクしない。 で問題ないだろ。 別の動的ライブラリから呼び出されるような場合でも、 ld時にそのライブラリも -lxxx2 で指定するのだから、 結局ldがすべて判断できる。 dlopen()の場合は考慮しないということで。
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:09:30 ] >>580 残念ながら改悪だと思われ。
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:10:24 ] >>583 考慮しろよww
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:11:14 ] >>579 だから場合分けして考えろって。 違う物に同じ理屈で挑むなよ… もし良いアイデアだと思うなら、自分で実装してみな。 俺等は使わないけど、君みたいな人が他にもいるかもしれん。
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:11:24 ] >>582 dlopen()するようなプログラムなら、 そのプログラムの「実行時の責任」で必要なライブラリを プログラムでロードするから、今の議論とは関係なし。(考えなくて良い)
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:12:20 ] >>587 dlsym(NULL, ...)って書いただろ。dlopenしないんだよ。
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:13:26 ] >>584 じゃあ、譲歩して、 ldのデフォルトは従来のままとして、 --no-link-unneeded みたいなオプションを付けたら、 不要なライブラリをリンクしない、ということでいいだろ? どうしてそういうオプションが ldにないのか?
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:16:00 ] >>588 どっちでも、今の議論では同じこと。関係ない。
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:19:11 ] 何でもかんでも『同じこと』なんだな。 ちょっと場合分けしたらスッキリ理解出来るのに… まぁ、ライブラリをロードする時間とメモリが惜しいなら、 自分が使うライブラリくらい把握しとけって事だな
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:24:21 ] >>590 関係有るだろ、-lでリンクしたライブラリを参照するんだから。
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:27:50 ] --as-neededとかあるけど?
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:28:10 ] >>592 dlsym()とかを使わないような普通のプログラムで、 環境対応のため念のため付けられている -lhoge オプションを、 ldが適切に判断してリンクしないようにしたい。 という議論で、dlopen()/dlsym()等で事情がある場合は ldに --force-linkなどのオプション指定して対応すれば良い話で、 その --force-linkなどのオプションが必要になるプログラムについては 話の本題ではないので、結局 dlopen()/dlsym()等の件は関係ないということ。
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:30:35 ] >>589 お前の糞みたいな益の無いアイデアで作り変えた糞ソフトをldと呼ぶな
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:32:38 ] >>593 詳しい人登場。(正解) 「-lhoge付けたんだから絶対にリンクするべきだ」とか、 「実行時じゃないと判断できない」とか 質問者を叩いていた人、全員不正解。
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:34:37 ] >>595 つまり、現状の ldにすでに備わっている 「--as-needed」オプションは、 「糞みたいな益の無いアイデア」なんですね、わかります。 作り変えなくても、すでにそう作られてるんですが、、
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:41:49 ] >>597 だから、お前のアホみたいなアイデアで作り変えたゲテモンをldと呼ぶなと言ってるんだ。 作り変えないならldそれはそもそものldだ、普通にldと呼べゴミカス
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:43:36 ] >>597 へぇ、じゃあ現状のldはデフォルトで使ってないものをリンクしないんだね? 違うよね?お前の糞ソフトはldじゃないんだよ。
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:47:37 ] >>598-599 見苦しいぞ。 --as-neededオプションをすぐに答えられなかった奴は素直に負けを認めとけww
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:47:58 ] >>596 >「実行時じゃないと判断できない」とか これは正しいだろ。--as-needed が使えるのは プログラム側でシンボルテーブルを参照していない 限りにおいてのみだぜ。これも場合分けって奴だ。 当たり前だが GNU の ld 固有の機能だから環境依存に 注意して使ってくれ。
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:49:56 ] あー、ちなみに Mac OS X では使えない。 必要とされていないのか、何か問題があるのかは知らん。
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 01:02:27 ] as-needed がデフォルトの動作でなくて、オプション付けないと有効にならない あたりから察しようぜ
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 01:12:29 ] >>602 古い話で悪いが、自宅の 10.4 だと % ld -v Apple Computer, Inc. version cctools-622.9~2 と出たので、Mac OS X の ld は GNU ld ではないと思う。 sed なんかも GNU ではなくて BSD みたいだし。
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 01:26:40 ] opensource.apple.com/source/ld64/ ソースを見てみても独自っぽい感じですね。 C++ で実装されてますし。
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 03:37:07 ] >>600 見苦しいぞ、おまえ
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 04:41:57 ] >>565 の > libhoge.aの中身は使われず、libhoge.aを付けずに > gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、 > 無駄になりません。 何が無駄? mmap された text/data segment はさわらなきゃ 主記憶に page in されへんと思ってたんやけど… 俺の認識違い??? 教えて, えらい人.
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 08:37:57 ] >>607 shared lib本体が主記憶に page in されないとか、そういう問題じゃないと思う。 たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした バイナリができてしまって、あとでライブラリがバージョンアップした時 コマンドが実行できなくなってしまうなどの問題がある。 実際に呼んでいて、ライブラリがないから実行できないのなら仕方ないが、 実際には呼んでないのにコマンド自体が実行できなくなってしまうのはおかしい。 それとも、実行時にリンクしてるライブラリが見つからなくても、 実際に呼び出していないならコマンド本体を実行させるような方法ってある? ないだろ。
609 名前:名無しさん@お腹いっぱい。 [2009/09/23(水) 08:40:03 ] libhoge.so.* が不要なはずなのに -lhoge でリンクされていて 別のシステムで libhoge.so.* が無い場合に 上の prog.c だけが使いたい人にとっては 無駄に libhoge.c がどこで提供されてるか探してきて そのコンパイルから何から必要になるじゃん? だから不要なものはリンクしないで欲しいんだ
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 10:51:30 ] >>608 へ?どうしても動かしたいならdynamic sectionの書き換えくらいするでしょ。
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:20:31 ] >>608 >たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした >バイナリができてしまって、あとでライブラリがバージョンアップした時 >コマンドが実行できなくなってしまうなどの問題がある。 これはリンカー以前の問題だよ。 リンカーで解決しようとする前に開発環境を見直した方がいい。 そもそもこんな事が問題になる事自体がおかしいぜ。 古いバージョンのライブラリも同梱しておけば良いだけの話だし。 どんなOSを使ってるんだ? それと、そのライブラリを絶対に使っていないと言う確信があるなら、 ダミーのライブラリを噛ませれば良いんじゃね?
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:25:13 ] --as-needed で問題は解決済み。 元の質問は解決してるのに、 --as-needed を答えられなかった人は、 いつまで負け惜しみの言い訳を続けるんだww
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:39:15 ] 解決したと思ってるのが…
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:49:10 ] >>612 は釣りだろ、本人ならあれを解決したなんていわない
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 12:35:39 ] >それと、そのライブラリを絶対に使っていないと言う確信があるなら、 >ダミーのライブラリを噛ませれば良いんじゃね? まあそうだな
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 18:17:14 ] gentooでas-neededつけると結構動かなくなるのがあったから使うの止めたよ. -lの順番とか適当だと動かなくなったりするし。 検索したらヒットしたので貼っとく --as-needed introduction and fixing guide ttp://www.gentoo.org/proj/en/qa/asneeded.xml
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 16:01:34 ] プログラムの話でなくてコンパイルの仕方のレベルの無駄話が続いているなぁ。 どうせhello worldかコピペしか作れない癖に スレ違いだ。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 20:05:41 ] 無駄話に無駄なオチがついたな。じゃあ次の質問よろしく。
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 23:57:12 ] シェルスクリプトでプログラムを書いてるのですが $* と $@ の使い分けがよくわかりません
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 00:19:08 ] 自分で試すとか、マニュアルを読むとかできるだろうに。 list() { for i in "$@"; do echo $i; done; echo; } set -- a "b c" "d e" list $* list $@ list "$*" list "$@"
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 07:17:20 ] >>619 シェルスクリプト総合 その15 pc12.2ch.net/test/read.cgi/unix/1246408968/
622 名前:名無しさん@お腹いっぱい。 [2009/09/25(金) 19:47:46 ] C言語で自分のOSの種類によって場合分けして実行するにはどうしたらいいんでしょう? 今は、 system("uname > tmpfile"); ってやってから、tmpfileを fopen()で開いて中身を読んでますが、 これだと無駄な気がしています。
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 21:27:43 ] >>622 そのまんま、uname() っていう関数がある。 sys/utsname.h でもふつうはビルド時に ifdef で分けるんじゃないかな。
624 名前:名無しさん@お腹いっぱい。 [2009/09/25(金) 22:17:37 ] パイプと標準入力の両方を読むために、 O_NDELAYを立ててループしてますが、 なんか重い感じです。 かと言ってsleepを入れると反応が鈍くなります。 何かいい方法はありませんか?
625 名前:anonymous mailto:sage [2009/09/26(土) 02:15:29 ] select(2) poll(2)
626 名前:名無しさん@お腹いっぱい。 [2009/09/26(土) 18:45:26 ] たとえプログラムに異常が起きてもcoreを吐かせないようにすることってできますか? シェルで設定する方法以外でお願いします。
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/26(土) 18:55:50 ] >>626 umask 000; find / -type d -exec touch {}/core ';'
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/26(土) 20:56:09 ] すみませんがあまりお詳しくない方は回答を御遠慮ください
629 名前:名無しさん@お腹いっぱい。 [2009/09/27(日) 03:25:07 ] >>626 シグナルハンドラ作ればいいよ。 この回答で理解できない方はプログラムを作るのをご遠慮ください。
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 07:27:47 ] >>629 理解してないのはお前。
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 07:51:06 ] コア吐きたくなかったらふつー setrlimit()じゃね? コア吐くような状況だと、まともにシグナルハンドラが 動作しないかもしれないぞ
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 09:09:37 ] >>625 この、select(2); poll(2); をプログラムのどこに書けばいいんでしょう? とりあえずプログラムの先頭に書いてみましたが、 あまり変化がないようです。
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 09:22:40 ] すみませんがあまりお詳しくない方はプログラミングを御遠慮ください
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 17:18:42 ] open()とかのシステム関数を使ったプログラムをやってみたいのですが、 C版しかないんでしょうか? C++版はないんでしょうか? あと、Java版もできればお願いします。
635 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 17:55:18 ] むー
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/27(日) 22:27:04 ] setrlimit()って、FreeBSD以外でも使えるの?
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/28(月) 10:51:32 ] setrlimitってPOSIX標準関数だよ いまどきのUNIX系OSで使えないやつなんてあるの?
638 名前:名無しさん@お腹いっぱい。 [2009/09/28(月) 21:23:48 ] OSコールを4種類以上使った意味のある短いプログラムを作成せよ。 ただし、OSコール以外の関数は使用しないこと。エラー処理は省略して良い。 ・・・というの、わかる方いましたらお願いします。
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/28(月) 21:28:17 ] open, read, write, exit
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/28(月) 21:35:11 ] >>639 いじわる
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/28(月) 22:38:48 ] すみませんが完答でお願いします
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 00:32:49 ] すみませんが関西弁でお願いします
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 00:35:04 ] #include <unistd.h> #include <fcntl.h> int main() { int fd; fd = open("HELLO", O_WRONLY | O_CREAT | O_TRUNC, 0644); write(fd, "hello, world\n", 13); close(fd); _exit(0); return 0; }
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 00:38:31 ] その前にfstat()しても良いかも
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 06:44:58 ] >>643 その場合、close()と_exit()が無意味なので、 「意味のあるプログラム」の題意を満たしません。 あと、write()のバイト数が間違ってます。
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 07:07:02 ] write()のバイト数は合ってるだろ
647 名前:名無しさん@お腹いっぱい。 [2009/09/29(火) 09:39:19 ] write()のバイト数が間違ってるなんて指摘するなんて、システムコールどころか Cを理解してない証拠。
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 10:31:25 ] で、回答まだぁ?
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 13:03:51 ] 煽り方がなんかちがうんだよ
650 名前:名無しさん@お腹いっぱい。 [2009/10/15(木) 19:19:19 ] すみません教えてください。 プログラムとプロセスについて調べているのですが、 フォークとエグゼックの違いを教えてください。
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 19:23:21 ] A ↓fork() A - A' ↓A'にてexec() A - B
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:04:21 ] fork: 現在のプロセスを複製して新しいプロセスを作る exec: 現在のプロセスで別のプログラムの実行をはじめる
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:28:15 ] spawn
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:34:26 ] つまり、プロセスを実行するのがフォークで、 プログラムを実行するのがエグゼックなんですか?
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:50:26 ] こんなとこで質問して宿題すませようとしないで本読めよ。
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 21:09:09 ] 普通のアプリケーションを実行する場合、 フォークとエグゼックとでは、どちらを使うのが一般的ですか?
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 21:58:46 ] 必要なものを必要なときに使うのが一般的です。
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 22:01:24 ] 普通のアプリケーションを実行したいのですが、 フォークとエグゼックとでは、どちらが必要ですか?
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 22:05:20 ] execlp execv
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 22:29:53 ] 普通のアプリケーション業務を行ないたいのですが、 execlとexcelとでは、どちらが必要ですか?
661 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 23:33:59 ] 宿題をしなければなりませんが、 フォークとエグゼックとでは、どちらが必要ですか?
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 13:18:31 ] 普通のフォークをエグゼックしたいのですが、 業務と宿題とでは、どちらが必要ですか?
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 13:46:50 ] 宿題。
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 14:46:15 ] 拡張子によって違うんだよ。 *.exeファイルを実行する場合はエグゼック、 *.fokファイルを実行する場合はフォークを使う。
665 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 21:26:59 ] すみません教えてください。 プログラムとプロセスについて調べているのですが、 フォークとエグゼックの違いを教えてください。
666 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 04:32:57 ] 逆に考えてみるんだ。 フォークとエグゼックの同じところを。
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 07:16:16 ] フォークは左手ナイフは右手ですねわかります
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 07:36:30 ] 必要な業務をどちらかしたいのですが、 フォークと普通とでは宿題がエグゼックですか?
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 07:45:08 ] 俺は昔夏休みの英語の書き取りの宿題をフォークして発音記号の書き取りをエクゼックしたら 先生にどうして宿題をやってこなかったのかと叱られたのでぶちきれる必要がありました。
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 08:57:28 ] つまらないネタで引っ張るバカがいるな。彼らなりに面白いのだろうか?
671 名前:名無しさん@お腹いっぱい。 [2009/10/17(土) 09:41:59 ] UNIXではリダイレクトしたファイルはargvに載らないのでしょうか? ファイル名がわからないのでアクセス権を変更できません。どうするのこれ?
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 09:59:01 ] リダイレクトされてるのは前のコマンドの出力であって、 ファイルそのものではないからね。で、何をしたいのそれ?
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 10:02:12 ] >>672 なんで「前のコマンドの出力」って限定するの? パイプと混同してるだろ
674 名前:671 mailto:sage [2009/10/17(土) 10:06:33 ] >>672 いいえ、ファイルそのものです。すでに書いた通りアクセス権を変更したいんですが。
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 10:33:22 ] >>673 ああ、そっか。ごめん。 cmd > foo とか cmd < foo した時に foo のアクセス権を変更したいってこと? cmd は foo の事を知らずに単なる入出力先として扱っているだけで、foo は cmd が open() する訳じゃないから無理じゃないの。
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 11:20:36 ] >>674 試したわけじゃないけど SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら fchmod でパーミッション変える ってのは可能かも
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 11:22:01 ] と思ったけど、Solaris で cat > foo したプロセスを pfiles してみると 出力先が foo であるのを確認できるね。だから何らかの方法でファイルの 名前を手繰る事はできるみたい。 あと fchmod() ってのがあったよ。これを使ったら良いんじゃないの。
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 11:24:47 ] あ、スマソ。>>677 は >>675 の続きで >>671 宛のレスです… 自分がユーザなら、リダイレクトしただけでファイルのパーミッションを 変更されたらがっかりしちゃうと思うけど…
679 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 14:56:44 ] 初心者は黙ってろ。 何も考えずfchmod(2)。パイプならエラーになるだけ。
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:05:15 ] さっすが上級者の言う事は含蓄があるなあw 話が片付いたあとにやってきて何故か上から目線で語りたがる奴って居るよな…
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:14:35 ] fchmodを見つけたなら、fstatとかpfilesとかグダグダと余計な事は 書かないでよろしい。
682 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:30:13 ] 問題が解決したのが分かったなら、初心者とか上級者とかグダグダと意味の無いレスは 書かないでよろしい。
683 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:35:18 ] 余計な事グダグダ言って>>676 も>>677 も解決してないだろ。
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:49:49 ] >>683 それでは今から目の覚める様な解決方法を見せて頂けるんですね? お願いします!
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 16:23:02 ] あれあれ?
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 16:43:20 ] 結局、偉そうにしたいだけだったんだな。がっかりだわ。
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:01:43 ] >>679 で解決済み。
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:13:26 ] え、>>679 って何も新しい事言って無いじゃん…
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:25:17 ] fchmodの前にレギュラーファイルである事を調べる必要はないと言っている。
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:34:45 ] それだけ?
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:44:21 ] fchmod一発の処理なんだからfstat付きと比べると雲泥の差。 初心者は無理して答えなくていいよ。邪魔だから。
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:50:28 ] それ、雲泥の差って自分に言い聞かせてるだけじゃん… しかも誰も fstat() が必須とは言ってないんだよなあ
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:40:56 ] バカ? メクラ? >>676
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:44:51 ] 初心者はなんで足りない知識で先を争って回答しようとするのだろう? そんなに答えたいならOKWebでも行けばいいのに。
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:47:59 ] え〜、どこをどう読んでも fstat() をしないといけないという風には読めないけど? それで、どこら辺が雲泥の差だったの?
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:50:13 ] 自称上級者は、既に出ている情報を偉そうな断定口調で書き込んだら、俺解決者宣言できる訳か。 2chは凄いインターネッツですね。
697 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 23:19:46 ] fstatしてファイルだったらfchmodって書いてありますが。バカですね。死んだ方が良いですね。
698 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 23:35:48 ] バカとか死ねとか子供の喧嘩かよw お前面白い奴だな。このまま一生続けてくれ。
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 23:45:11 ] ケンカはやめて(><)
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 01:42:17 ] 言い逃れが出来ないようですな。理解していない事は無理して答え無くて良いのだから、 初心者は出しゃばらないように。
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 01:53:01 ] fstat しなくてはいけないと書いてある訳じゃないから反論する必要も無いでしょ。 元々、大した情報も持ってない人が後出しで上級者を気取ってるだけみたいだし。 バカとか死ねとか初心者とか書いて煽ってるのはレスが欲しいからなんだろうけど、 そういうレス乞食みたいなのは止めにしようぜ。
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 02:04:01 ] 最早雲丹板邪内罠
703 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 05:48:52 ] >>700 つ 鏡
704 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 07:58:10 ] > SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら > fchmod でパーミッション変える 呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www 無様すぎ。お前の完敗。
705 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 10:23:55 ] ところで、 > SIDOUT_FILENO なり SIDOUT_FILENO って何? この辺にも知識レベルが露呈してますな。
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 14:31:56 ] 何だ、お前自称上級者か。まだやってたんだなw そうやって無理矢理に勝利宣言しても意味ないぞ。自分でも分かってるんだろ。 誰も fstat が必須だとは書いてないし、fstat したところでお前さんの言う所の 雲泥の差なんて物はない。君が来る前に問題は解決してたんだよ。残念だったな。 ↓もう少し見ててやるから何か書き込めや。
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 15:05:54 ] ちょっと聞いてくれよ。 実は3〜4年前銭湯で幼稚園ぐらいの女の子に「パパー この人のちんちん大きー」と指をさされて大声で言われた。 確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。 その子のお父さんは「すみません」と恥ずかしそうに謝っていた。 しかし、それだけでは終わらなかった。 俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。 お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ〜ん、なにお話してるの?」と同じくらいの女の子の声が聞こえてきた。 すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。 すると男湯、女湯の両方からくすくすと笑い声が聞こえた。 俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。 その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ〜ん、大変〜、この人のちんちん上にいっちゃったの〜、パオーンしてるの〜」と 女湯に向かって叫んだ。男湯・女湯同時に大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。 それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。 その日以来、銭湯へは行かなくなった…。
708 名前:名無しさん@お腹いっぱい。 [2009/10/18(日) 17:34:21 ] 呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 17:47:21 ] 最後にレスしたら勝ちみたいな思考がワロスw
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 18:32:17 ] 「必ず呼べよとは言っていない」というのはわかりました。 で、試しに SIDOUT_FILENO を使って fstat()を呼んでみたところ、 エラーになりました。本当に SIDOUT_FILENO を使って呼んでいいんですか?
711 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 18:48:46 ] >>710 >「必ず呼べよとは言っていない」というのはわかりました。 何だ、理解できるんじゃん… 何でこんな時間が掛かったのか知らんけど、分かったならもう粘着するなよ。
712 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:03:54 ] じゃなくて、呼ぼうとするとエラーになるんだから、 「呼んではいけない」と訂正するべきじゃないんですか? あと、SIDOUT_FILENOについてはいつまで訂正しないつもりですか?
713 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:14:25 ] 何でそれを俺に言うんだ? そんなに気になるなら君が訂正してあげれば良いんじゃないの。
714 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:16:38 ] >>676 に言ってるんだが
715 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:18:44 ] >>714 じゃあ、これは何だ? >>712 >じゃなくて、 紛らわしい書き方をするなよ。あとレスアンカー付けろ。
716 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:23:50 ] >>708 > 呼べとは言ったが、必ず呼べよとは言っていない ↑つまり、「呼んでも構わない」とは言ったということだよね。 ところが、 呼ぶとエラーになるんだ。呼んではいけない。 よって、>>708 = >>676 の負け。
717 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:26:46 ] ところで、お前さんに勝って誰が得するんだ?
718 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:57:15 ] > 呼べとは言ったが、必ず呼べよとは言っていない...www 馬鹿丸出しの小学生並みの言い逃れですな。
719 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 23:27:56 ] プログラミングに使いそうな単語を使った言葉遊びのスレなんですね、ここは
720 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 12:22:07 ] 自分の間違いを認められない初心者が粘着しているだけ。
721 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 19:46:41 ] 初心者が初心者を見下してどうするんだ
722 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 20:20:31 ] > 呼べとは言ったが、必ず呼べよとは言っていない...www こんな無様な言い逃れ、めったにお目に書かれない。
723 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 20:38:26 ] デスマご苦労さまでちゅ! 仕事がなくてヒマしているPGさんも ご苦労さまでちゅ! 壊れて辞めてしまったPGさんも これまた本当にご苦労さまでちゅた! さて、フロは入ったほうがさっぱりいたしますが、 スレタイどおりと思いませんか?
724 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 20:40:32 ] お前ら仲良いなw
725 名前:名無しさん@お腹いっぱい。 [2009/11/08(日) 22:13:22 ] select(2)のfd_setのサイズが馬鹿でかくてウザいんですけど、 ファイル記述子が32個以下であることが確実な場合、 fd_setの代わりに強引にintの変数を使っても問題ないですかねぇ? あ、poll()使えというのは無しの方向で。
726 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 05:05:19 ] ダメに決まってるだろ。
727 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 06:36:35 ] >>725 もちろんOK。warningを消すためにキャストしてね。
728 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 08:05:25 ] >>727 ありがとうございます。intで行ってみます。 >>726 ありがとうございませんでしたw
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 17:34:47 ] システムコールしたらカーネルはfd_set分の大きさをcopyinするだろうから、 そのintがページ末尾にあって、fd_setの大きさだったらページ境界をまたぐ 場合、そしてその次のページのメモリをプロセスがとっていなかったとすると そのタイミングでsegmentation faultで落ちるんじゃないか。
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 17:49:46 ] >>729 そんなことはない。 select()の第1引数がビットの最大値を決めていて、 カーネルはそのビットを含むアドレスまでしか見に行かないから Segmentation faultなどしない。 (そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない) (Solarisとかだと、ユーザープログラムのコンパイル時にfdsetのサイズを再定義することが可能) ただ、FD_ZERO()などのマクロは正常動作しないので、 ビットのセットやテスト等はintに対して自分で演算すること。
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 17:55:31 ] あー、なるほど。たしかに。
732 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 21:18:59 ] つーかそんなことOS依存なんでは? POSIXとかで、panicしてはいけないとか、決まってるの?
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 21:19:39 ] ああ、panicじゃなくてerrno=EFAULTでのエラーか。
734 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 01:09:38 ] >>730 > (そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない) 上限はあるけどね。
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 07:18:09 ] >>734 下限の話をしているのに「上限」とは的はずれで蛇足な突っ込み しかもその上限は、open filesとしての上限であって、 fdset自体の上限じゃないし。
736 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 08:01:23 ] >>734 fd_setのビット数、2147483647 (=2^31-1) まで正常動作を確認。(上限無し)
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:38:55 ] そんなにたくさんfdを作れるとでも?
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:45:16 ] >>737 だから、fdの話じゃなくてselect()のインターフェイス上のfd_setの話だって。 >>735 も言ってるでしょw fd_setは(int最大でも使えるから)上限無し。
739 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:50:25 ] userlandから渡すfd_setの幅がいくら広くても仕方ないでしょ。 カーネルがそこまで本当にアクセスしてると思ってるわけ?
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:53:27 ] >>739 最初の議論ちゃんと読んでる? 「カーネルがそこまで本当にアクセス」しないからこそ問題が起きない。 だから、fd_setは(fdとは無関係に)好きなサイズで確保して構わない、 という話をしてるのだが。
741 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 10:07:26 ] 上限の話をしても意味がないってのを理解してないらしい
742 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 00:45:33 ] >>736 環境書かないと意味ないんじゃない?
743 名前:名無しさん@お腹いっぱい。 [2009/11/11(水) 15:44:44 ] 詳しい人にとってはとてもレベルの低い話かもしれませんが、よろしくご教授下さい。 Linux環境でライブラリの中の動きを見ようと思っています。 ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。 すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。 error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。 多分初歩的な大きな間違いを犯していると思うんですが、どうしたらいいですか?
744 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 16:23:46 ] スタックのどこかが壊れるバグを入れ込んだ、ないし顕在化させたんだと思うが。 とりあえず、一つ一つ付けたり外したり、あるいは半分ずつ切り分けるなり、 デバッガで怪しい動作をさぐるなり、そういう手しかない。
745 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 16:30:40 ] >>743 libcのファイル名見るとLinuxっぽいね。 #define EINTR 4 /* Interrupted system call */ だからそこでfprintf(3)は厳しい状況じゃないかな。
746 名前:名無しさん@お腹いっぱい。 [2009/11/11(水) 17:00:16 ] >>745 そこに書いてある意味はよくわからないんですが、 「error 4 in」って出るライブラリはそもそもfprintfを使えないということですかね 回避策はシステムコールのみを使ってfprintfの役割を代替するものを使えばいいって ことでしょうか?
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 19:01:27 ] いや、システムコールの呼び出し自体が問題になってる。 「再スタート可能なシステムコール」あたりでググって、 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。 どこかメモリ上に書けば? core dumpするから読めるでしょ。
748 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 23:27:36 ] 知ったかぶりに振り回されないように注意しな。 error 4はセグメントフォルトの詳細コード。EINTRは全然関係ない。 どうせ、%sに無効ポインタ渡しているとかいう原因だろ。
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 23:51:15 ] >>745 Linuxって言って質問してるのに「Linuxっぽいね」って、、、
750 名前:名無しさん@お腹いっぱい。 [2009/11/11(水) 23:53:47 ] >>748 >>747 が正しい可能性が高いと思います。 >>747 を受けて、既にログ出力用の関数が用意されていないかと探してみたんですが、 Makefile.amに 「このソースファイルはライブラリに使える」 「このソースファイルはデーモンとテストアプリに使える」みたいな 記述があって、ログ出力の関数は後者の中にしかありませんでした。 前者だとソケットプログラミングしないと中の動きは見れないようです。
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 23:56:58 ] >>748 知ったかぶりに振り回されないように注意。 %sに無効ポインタ渡してるのが原因なら質問するまでもなく自己解決する。
752 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 00:04:09 ] EINTRは関係ない。 error 4は↓の40行目 PF_USER(ユーザモードでのページフォルト) www.gelato.unsw.edu.au/lxr/source/arch/x86_64/mm/fault.c segfaultが発生してると言っているのにEINTRとか馬鹿杉。無能杉。
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 00:39:45 ] 何か嫌な事でもあったのか?
754 名前:名無しさん@お腹いっぱい。 [2009/11/12(木) 01:03:13 ] >>748 ,751 確かに無効ポインタを渡している可能性はないと思います。 最初に質問する前に既に念のためfprintf (fp,"aaaa%s","aaa");だけで試していました。
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 01:08:23 ] >>744 で答えは出てるんじゃないの。 取り敢えずスタックダンプでも見てみたら。
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 06:39:13 ] >>744 って全然答えになってないが、、
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 07:31:26 ] EINTRとか言い出た知ったかクンの弁明は? > いや、システムコールの呼び出し自体が問題になってる。 爆笑。もはや芸術的な勘違い。
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 08:52:50 ] 何か嫌な事でもあったのか?
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 19:45:04 ] >>754 可能性の高い順 1位 無効ポインタを渡しているのを見落としている。 2位 stdin/stdout/stderrが既にクローズされている。 3位 fprintfが利用している関数内にfprintfを突っ込んだので無限再帰になっている。 <中略> 4294967296位 error 4はEINTR。システムコールの呼び出し自体が問題になっている。
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 19:51:34 ] ここには良いエスパーは居ないみたいだから地道にデバッグするのが良いと思うぜ
761 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 20:17:10 ] >>759 >無効ポインタを渡しているのを見落としている は、本人がすでに否定。 >stdin/stdout/stderrが既にクローズされている クローズされてるstdout等を呼んでもエラーになるだけでセグフォはしない。
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 20:24:13 ] stdioライブラリのバッファ等の干渉を避けるため、 fprintf()の代わりに write(2, "hoge?n", 5); を使って問題を切り分けとけ。
763 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 20:30:09 ] > は、本人がすでに否定。 本人は否定しているが、その上で見落としているという意味だよ。 > クローズされてるstdout等を呼んでもエラーになるだけでセグフォはしない。 大分前にglibcでセグメントフォルトした気がする。記憶違いかもしれないが、 4294967296位よりは可能性高い。
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 20:33:06 ] 一緒だよ
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 21:33:32 ] >Linux環境でライブラリの中の動きを見ようと思っています。 >ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。 >すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。 どのライブラリに対してそれをやったのか知らんが fprintfをどこでも使えると思ってるのがそもそもの間違い
766 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 21:38:22 ] エスパーなら、どのライブラリの中からfprintf()を呼べばsegfaultが再現するか、 ずばり言い当てるべきだな。 (無効ポインタとか、クローズ済みとか的外れなこと言ってる奴は無視して)
767 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 22:02:02 ] 知らんがな(´・ω・`)
768 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 22:17:29 ] システムコールの呼び出し自体が問題だからだ。EINTRが明確に示している。
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 22:58:41 ] >>743 > error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。 この前後をしっかりとそのままコピペしてはどうだろうか。
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 23:12:40 ] すみませんが詳しい方のみ回答をお願いします
771 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 23:17:12 ] もう質問者も見てないだろw
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 23:21:46 ] >>769 ググれば沢山ヒットする。 EINTRには笑うが、それを更に推し進めて>>747 の結論に至るとは笑いを通り越した 芸術的な域に達している。 >>770 詳しくない奴の方が面白い。>>747 とか。
773 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 23:31:16 ] 何か嫌な事でもあったのか?
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 23:45:35 ] お前の破れかぶれのギャグで全部吹き飛ぶよ。
775 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 00:42:24 ] BSDの法則 「どうでもいい話題ほど盛り上がる」
776 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 01:06:19 ] > いや、システムコールの呼び出し自体が問題になってる。 > 「再スタート可能なシステムコール」あたりでググって、 > 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。 何度見ても笑えるな。
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 01:40:58 ] 盛り上がってるのは一人だけっぽいけどなw
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 02:10:50 ] 盛り上がってもらって困るのも一人だけだけどな。
779 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 02:59:55 ] 多分君が言ってる人はこのスレにはもう居ないと思うがなw
780 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 20:44:30 ] そうか、殺伐としたスレにもっと潤いを振りまいて欲しい。 > いや、システムコールの呼び出し自体が問題になってる。 > 「再スタート可能なシステムコール」あたりでググって、 > 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
781 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 20:55:56 ] 俺は粘着してる奴を眺めてるのが何より愉しいぜ
782 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/13(金) 22:15:46 ] そうか、じゃあ愉しんでくれ。 三行目が実に芸術的だ。「理解するのはちょっと厳しいかもね。」 > いや、システムコールの呼び出し自体が問題になってる。 > 「再スタート可能なシステムコール」あたりでググって、 > 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
783 名前:名無しさん@お腹いっぱい。 [2009/11/25(水) 21:12:19 ] exit()と -exit()ってどう違うんですか? というか、違うんですか??
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/25(水) 21:21:11 ] exit(3)と_exit(2)のことなら、ライブラリ関数とシステムコールの違い
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/25(水) 21:25:07 ] いいえ、どちらも exit(1)を呼んでます><
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/25(水) 21:38:37 ] 知らないなら黙ってればいいのに。
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/25(水) 22:01:35 ] 始まったなw
788 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/25(水) 22:12:02 ] 期待しているようだったから。
789 名前:名無しさん@お腹いっぱい。 [2009/11/26(木) 20:37:31 ] >>783 誰もわからないんですか? やっぱ同じなんでしょうか??
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/26(木) 21:03:24 ] exit(3)はvoid exit(int)と宣言されているので、 exit()は引数不一致でエラー -exit()はそれに加えて単項マイナスでもエラー
791 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/26(木) 21:20:50 ] 後方互換性のため、exit(3)は int型でも使用できます。
792 名前:名無しさん@お腹いっぱい。 [2009/12/11(金) 01:46:58 ] aio_writeって ・パイプやソケット仁対して使える? ・(使える場合、)aio_offsetに何入れればいい? ・(使える場合、)aio_writeを発行した順に書き込まれることは保証される?
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/11(金) 08:48:39 ] O_APPEND なfdで使う場合、aio_offsetは関係ない。
794 名前:名無しさん@お腹いっぱい。 [2009/12/26(土) 21:34:15 ] Cで、chdir文を実行した時、これを保存するには何か設定が必要なんですか?
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 01:05:42 ] 「これ」って何?
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 02:52:31 ] カレントディレクトリの状態、じゃないかな? 程よくエスパーすると、カレントディレクトリの状態はプロセス毎に持っ ていて、親プロセスのカレントディレクトリを子プロセスから変更する ことはできない。
797 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 03:13:38 ] 初期実装の失敗談にそういう笑い話があったな。 「cd を外部コマンドにしようとしてよく考えたら駄目だった」って奴w
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 08:35:05 ] プロセスとかそういうことはやってません。 単独のプログラムです。 ひきつづきchdirの保存方法の回答をお願いします。
799 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 09:06:31 ] 先ずはググれよ。英語ならマトモな情報あるかもよ?
800 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 09:18:41 ] 何保存するのよw
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 09:41:47 ] ユ○ゲラーも真っ青なエスパーの俺が回答しよう まず「保存」の意味だが、こういうことだろ? ore@localhost:anywhere$ ./my_app (my_app内でchidir()を実行) ore@localhost:somewhere$ ← 別の場所に移動している で、>>796 はこれを「できない」と言っている。 (親プロセス(シェル)のカレントディレクトリは子プロセス(my_app)からは変更できない) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 09:54:58 ] ですから、子プロセスは作ってないんです。同じ端末ですから。
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 09:56:06 ] まったくお前らはエスパーとして半人前だな。 >>794 の chdir「文」を見落としている。 つまり、これは C言語でなく、Cシェルスクリプトだったんだよ! >>794 は Cシェルスクリプトを作り、その中で chdir でディレクトリを 変更したが、スクリプトが終わるとディレクトリが変わってないことの 対策を訊ねているんだ。 まあ、>>801 は惜しかったが「出来ない」って回答じゃあ減点だね 正解は、source を使え、だ!
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 10:03:48 ] {chdir();} こうすればCでも文になるぞ!
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 10:07:46 ] >>802 > ですから、子プロセスは作ってないんです。同じ端末ですから。 はぁ?
806 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 10:10:23 ] なりすましの釣りだろw
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 19:48:42 ] >>805 作るとできちゃうの違いを認識せよ
808 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 19:58:21 ] ですから、子プロセスは出来てないんです。同じ端末ですから。
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 20:03:18 ] バカのふりをするBOTを走らせたまま放置するのは迷惑なのでやめてください>作者
810 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/28(月) 22:30:39 ] /dev/kmemで親プロセスのカレントディレクトリを直接書き換えれば可能。
811 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/29(火) 09:41:26 ] vnode の参照カウンタもちゃんと上げとかないとな。 排他とか大変そうだ。
812 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/30(水) 00:54:14 ] あれだけスパコン叩いてたレンポウの息子が改造ゲーム機やってたって笑えるw 子供がレンポウのPCでP2Pも使ってる可能性大。ひろゆき降臨してるぞw 【違法】仕分人・参議院議員の蓮舫さんが息子のマジコン使用をインターネットで暴露「学習しました!息子を説教中」 tsushima.2ch.net/test/read.cgi/newsplus/1262098965/
813 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/30(水) 08:56:22 ] プラス民は巣から出てくるな
814 名前:名無しさん@お腹いっぱい。 [2010/01/09(土) 11:11:27 ] malloc()って、たとえfree()を呼んでもライブラリレベルで未使用リストに 登録されるだけで、カーネルレベルではメモリ解放されないじゃないですか。 これを、free()後、ブレーク領域の後半部分で本当に未使用の連続領域について brk()とかでカーネルレベルでメモリ解放させる方法はないですか?
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 12:44:13 ] vipw とか crontab とか visudo や、 あるいは VCS の commit 時の commit ログを記述するときなど、 何か処理をする前にエディタを起動して編集終了したらそれを読み込む、 みたいな処理ってよくありますよね。 あれを自分のツールでもやりたいんですが、 既にライブラリ化されているものがあれば教えてください。 ツールは Ruby で作ろうと思っているんですが、 他の言語でも自作の際の参考になると思うのでかまいません。
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 12:47:34 ] それくらい作ろうと考えずに、ます探す。しかも自分で検索しないで。 これがruby脳か。
817 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:09:33 ] >>814 free()で解放されないとは限らない。 例えばglibcでmalloc()で確保されている領域の場合、 free()で解放される可能性がある。 ただその辺りの制御をしたいなら、自分で mmap なり使って 領域管理をするのが、てっとり早いと思う
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:11:07 ] s/例えばglibcでmalloc()で/例えばglibcでmmap()で/
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:38:26 ] >>817 えっと、それは知ってるんですが(苦笑) 自分でmalloc()を再実装したりせずに 現状のmalloc()に直接メモリ解放を指示する方法の質問です。 >>818 glibcなら、mmap()だけじゃなくsbrk()で確保されている領域でも 場合によってはfree()で解放される場合があります。
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:42:06 ] メモリアロケータくらい自分で作れば良いじゃん。苦笑してる間に実装出来ると思うが。
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 18:04:46 ] >>814 dlmalloc なら mallopt(M_TRIM_THRESHOLD, 0) でそうなる。 dlmalloc ベースの実装なら似たようなオプションが使えるかもしれない。
822 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 18:11:53 ] 実行環境に依存する話なのに実行環境が書いてないから釣り
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 18:15:03 ] メモリアロケータは好きなものに置き換える事が可能なので、 環境依存とは言えない。
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 19:38:40 ] 置き換えも許容したら余計話が発散しますがな
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 23:05:35 ] LD_PRELOAD 等で malloc を置き換えるのは割と一般的な話じゃないの。
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/10(日) 00:50:07 ] >>816 ruby脳とか言われるのは癪ですが、 何でもまずは自分で作ろうとせずに探すべしとおじいちゃんに言われましたもので。 自己解決しましたのでもういいです。
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 10:50:41 ] 自分で探す努力をしない姿勢を批判されてるのになぁ 開き直りもいいとこだな
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 10:53:55 ] それがruby脳
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 10:59:00 ] >>827 「開き直り」の用法を間違えてます。 自己解決 → 開き直りではない 解決してないけど解決する必要はないと言い張る → 開き直り
830 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 11:28:49 ] > 態度を改め、まじめに応対する。また、観念してふてぶてしい態度に出る。居直る。 > 急に態度を変えてきびしくなる。覚悟をきめて、ふてぶてしい態度に変わる。いなおる。
831 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 21:41:31 ] 言葉遊びならどっかいってやれよ
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 22:14:14 ] 言語遊びも似たようなもんだ。
833 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 22:15:20 ] また開き直ってるよこの基地外
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 22:44:12 ] 「開き直る」の用法を間違えています。
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/12(火) 17:40:04 ] うへー この粘着っぷりは女だな きめえ
836 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/14(木) 14:37:21 ] >>835 おまえがきもい
837 名前:名無しさん@お腹いっぱい。 [2010/01/21(木) 15:48:46 ] (1)最大10人の、3科目(数学、英語、国語)の成績データ(整数)がある。 最初に人数を入力し、そのあと人数分の3科目の成績を入力すると、各科目の平均点を小数点以下2桁で表示するプログラムを作成しなさい 。 ただし、10を超える人数を指定した場合にはエラーメッセージを表示して終了すること。 (2)個々の成績を格納する配列を1つの2次元配列に改造し、動作を確認しなさい。
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 15:55:53 ] >837 学校のプログラム課題の質問にはお答えいたしかねます
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 19:31:04 ] >>837 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXNUM 10 #define MAXDAT 3 #define MAXBUF 4096 int main(int ac, char **av) { int i, j, k; int points[MAXDAT][MAXNUM + 1]; char buf[MAXBUF]; char *dat[] = {"Mathmatics", "English", "Japanese"}; fprintf(stdout, "Number of persons = ? "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &i); if(i < 0 || i > MAXNUM){ fprintf(stdout, "Please input number 1 - 10\n"); return 1; } for(j = 1; j <= i; j++){ fprintf(stdout, "Person %d 's Mathmatics, English, Japanese = ? ", j); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d, %d, %d", &points[0][j], &points[1][j], &points[2][j]); fprintf(stdout, "%d, %d, %d\n", points[0][j], points[1][j], points[2][j]); for(k = 0; k < MAXDAT; k++){ if(j == 1){ points[k][0] = 0; } points[k][0] += points[k][j]; } } for(k = 0; k < MAXDAT; k++){ fprintf(stdout, "Average %s = %.2f\n", dat[k], (double)points[k][0] / i); } return 0; }
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 20:29:02 ] #!/usr/bin/awk -f BEGIN { getline; NR = 0; if ($1 > 10) { print("Too many recs"); exit }} { for (i = 1; i <= 3; ++i) sum[i] += $i } END { for (k in sum) printf("%.2f ", sum[k] / NR); printf("\n"); }
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 20:30:42 ] 少なくともループ使わないぐらいのボケはかますべきだろ
842 名前:名無しさん@お腹いっぱい。 [2010/01/23(土) 22:22:26 ] ソラリスだけコードを変えたいんですが、 #ifdef __solaris__ ってやっても無視されます、ヘルプお願いします
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/23(土) 22:28:28 ] >>842 docs.sun.com/app/docs/doc/820-1209/bjapy __sun を使えばオケ。
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 07:52:48 ] >>843 それだと、SunOSまで含まれるから不可。 (dosc.sun.comって間違いあるんだね) 正しくは、買収されたので __oracle__ を使う。
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 13:11:04 ] >>844 uname すれば分かりますが Solaris は SunOS ですよ。 間違い易いポイントだとは思いますが。
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 13:47:23 ] >>845 だから、SunOSを除くSolarisだけで場合分けしたいんだよ。 __sunは、SunOSでもSolarisでも定義されてる。だから__sunは不可。
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 14:04:36 ] __SunOS_n_nで列挙しろ。
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 14:19:18 ] >>846 だから、SunOS を除く Solaris という物は存在しないんだよ。 お前さんは質問者じゃないんだろ。勝手に不可とか決めるなよ。 docs.sun.com は間違っていないし、今時 Solaris じゃない SunOS を除外する理由なんて無いだろ。 ネタだとしても、次からはもっと面白いレスを頼みますよ。
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 14:28:36 ] >>846 #if defined(__sun) && !defined( __SVR4)
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:08:06 ] >>849 ありがとうございました。できました。 >>843 >>845 >>847 >>848 すみませんが、ありがたくありませんでした。
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:10:05 ] つまんないからもういいよ
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:13:15 ] >>849 おいおい、それはSunOSの場合だろw Solarisなら、 #if defined(__sun) && defined(__svr4) >>850 は本当に試したんだろうか?
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:15:41 ] Solaris = 「RedHat」やら「Ubuntu」やらと同じ、ディストリビューションの名前 SunOS = 「Linux」と同じ、OSの名前
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:20:10 ] >>852 ありがとうございました。今度こそできました。 Solarisの他にSunOSもまだあって、 SunOSの方はFreeBSD等と同じソースでビルドできるので、 Solarisの場合だけ場合分けしたかったのです。 助かりました。
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:24:01 ] libucb
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:46:57 ] もう少し面白いネタキボンヌ。
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/26(火) 11:46:44 ] Python で rlwrap もどきを作ろうとしていて、大体は動いているのですが、 最初にタイプした1文字だけが2回エコーされてしまいます。 どうしてか教えていただけないでしょうか。 codepad.org/JUkKghqq 環境はCentOS 5.3 / Python 2.4 です。
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/26(火) 14:51:52 ] pc12.2ch.net/test/read.cgi/tech/1253535109/
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/26(火) 23:03:20 ] もしこれがCで書かれていたら、「K&R読め!」で解決する問題か?
860 名前:名無しさん@お腹いっぱい。 [2010/02/06(土) 21:35:51 ] readv()で読んだデータがバッファより短かった場合でも、 struct iovecのiov_lenが元の値のままです。バグでしょうか? どうやってデータサイズを知ればいいんでしょうか?
861 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/06(土) 22:15:02 ] man良く読んでご覧。OSのバグという事にしたがるのは100年早い。 Each iovec entry specifies the base address and length of an area in memory where data should be placed. The readv() system call will always fill an area completely before proceeding to the next.
862 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 08:39:08 ] >>861 man良く読んでご覧。引用した部分だと「今のバッファを完全に満たしてから 次のバッファに移る」ことを言ってるだけで、データが足りなかった場合の 答えになってない。 man引用しただけで解答になってることにしたがるのは100年早い。
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 10:57:56 ] >>862 煽って回答聞こうなんて随分古い手つかうな。www これで理解出来ないなら、プログラム作るのは100年早い。
864 名前:862 mailto:sage [2010/02/07(日) 11:03:18 ] >>863 俺、回答者の間違いを指摘しただけだし。 質問してるわけじゃないし。
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 11:07:46 ] >>864 理解出来ないバカが横から割り込んだ事にしたいのか? 必死だな。ww お前がプログラムにつまずいていてもオレは全然困らない。
866 名前:862 mailto:sage [2010/02/07(日) 11:12:08 ] おそらく >>861 は、"always fill" だけを読んで 「バッファは常に満たされる(満たされないことはあり得ない)」と 誤解したんだろう。そのあとの "before" の条件を読み落してる。 で、>>860 が質問してるのは、バッファが満たされなかった時の そのサイズ等の取得方法。manを参照するとしても、 >>861 の部分ではポイントがズレてる。 ちなみに、俺は質問してるんじゃないので、正解は知ってる。
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 11:13:20 ] 俺も >>861 は意味不明だと思ったよ 質問者は iov_len がなぜか更新されない。バグか?、って訊いてるのに 関係無い引用して論破したテイになってるのが不思議 そもそも >>861 以降 >>860 の質問に誰も答えてないことの方が あれなわけだけど
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 11:18:24 ] そんなに、必死に弁解するなよ。w
869 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 10:10:34 ] つーかmanよく読めって言うにしても>>861 は指摘する場所が見当違いだわな
870 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 10:33:23 ] 全力で工作中だな。 お前のプログラムが完成しなくてもオレは全然困らない。
871 名前:名無しさん@お腹いっぱい。 [2010/02/08(月) 11:44:01 ] 複数の数字に,同じ四則演算(+,−,*,/)を繰り返した計算結果を表示するシェルスクリプトを,cshシェルスクリプトで書け。 (基本仕様) @ コマンドとして実行できる.(シェルコマンドである.) A 入力した数字を計算できる. B 入力できる数字の個数は2以上とする. C 四則演算子(+,−,*,/)を選択,または直接入力して 数字1□数字2□・・・□数字N (□=+ or − or * or /,N≧2) の計算結果を出力する. D 四則演算子以外の記号が入力された場合,エラーメッセージを出力する. (ポイント) ? シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く. ? 標準入力から文字列を入力するには $< を用いる. ? コマンドラインに引数を指定した場合は,その引数は変数$argvに格納されている.その各要素を参照するには,$argv[1],$argv[2](または$1,$2)などとする. ? 四則演算には @ コマンドが使用できる.(ただし,整数しか扱えない.) 誰かわかるひとお願いします
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 11:54:10 ] あぁ、マルチか。 つられちゃったw てへっ?☆
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 21:58:41 ] csh って事はネタ振りかな?
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 22:06:01 ] pc11.2ch.net/test/read.cgi/linux/1265164112/159 pc11.2ch.net/test/read.cgi/linux/1238764663/552 pc12.2ch.net/test/read.cgi/unix/1246408968/928 pc12.2ch.net/test/read.cgi/unix/1127388574/871 pc12.2ch.net/test/read.cgi/unix/1246408968/928
875 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/19(金) 18:45:39 ] >>873 日本は義務教育で基礎法学を教えないからわかってない人が多いみたいだけど、権利と義務は表裏一体、つまりワンセットなんだよ 例えば「生きる」という権利には「働く」という義務が伴なう。これは習っていなくたって誰でも常識で分かると思うけど 社会の中のあらゆる権利にはそれと対になる義務が存在するということ 戦後の日本人はこの表裏一体を勘違いして、自分の権利は相手の側から見ると義務なんだ、等と意味不明な屁理屈を捏ねて 相手(多くの場合国家)に対して一方的に権利を主張、すなわち義務の履行を求める者が多い いわゆるプロ市民と呼ばれる物共だ 日本人が彼らのような人間(一方的に権利を主張するだけの個体がそもそも人間の定義を満たすのかどうかは疑問だが)に違和感を覚えないのは もちろんマスコミの罪でもあるけど元を糾せば教育にも決して原因が無い訳ではない
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/20(土) 09:06:17 ] なにがおもしろくてこんなバカ丸出しのコピペをするんだろ。
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/20(土) 11:37:21 ] >>875 了解 漏れも基礎方角を学んで起きたかった
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/20(土) 11:39:49 ] >>873 は俺なんだが。