09/03/01 11:59:15
だったらせめて -xc をやめて
-xc++ や -std=c99 をつけた結果を貼れよ。
C89で保証されてないことなんか、知らない奴殆ど居ないんだから。
>>376からの流れなのに>>380がC++の話じゃないと思い込むバカは居るかもしれないけど。
422:名無しさん@お腹いっぱい。
09/03/01 12:02:08
>>419
どこに、「C89で省略できる」って主張してる奴がいる?
あ、いるのかな。
戻り値が保証されてるとは誰も書いていない、ってだけで。
423:名無しさん@お腹いっぱい。
09/03/01 12:12:12
×戻り値が保証されてるとは誰も書いていない
○戻り値が保証されると脳内で勝手に決め付けて特定の実装の結果を張り続けるバカもいる
424:名無しさん@お腹いっぱい。
09/03/02 10:17:57
linuxだとsearch.hのハッシュがやけに遅いのでGhashTableのが性能いらしいんだけど
FreeBSDの場合ハッシュの実装をするのにGhashTableとsearch.hと
どっちのがおすすめ?
425:名無しさん@お腹いっぱい。
09/03/02 12:38:43
ほとんどの人には不要だと思うけど、一応張っとく。
C++とC98は、main関数は暗黙のreturn 0。C89とその前はそうではなかった。
$ echo 'int main(){}' | gcc -std=c99 -xc - && ./a.out; echo $?
0
$ echo 'main(){}' | gcc -std=c99 -xc - && ./a.out; echo $?
<stdin>:1: 警告: return type defaults to ‘int’
0
$ echo 'int main(){}' | gcc -Wall -std=c++98 -xc++ - && ./a.out; echo $?
0
$ echo 'main(){}' | gcc -Wall -std=c++98 -xc++ - && ./a.out; echo $?
<stdin>:1: 警告: ISO C++ forbids declaration of ‘main’ with no type
0 # 禁止されてるけどエラーにならない
$ echo 'int main(){}' | gcc -Wall -std=c89 -xc - && ./a.out; echo $?
<stdin>: In function ‘main’:
<stdin>:1: 警告: control reaches end of non-void function
196
426:名無しさん@お腹いっぱい。
09/03/02 12:48:53
>>424
基本どっちもクヌース本のアルゴリズム。
427:名無しさん@お腹いっぱい。
09/03/02 12:52:43
C98という新規格まで登場したか。
428:名無しさん@お腹いっぱい。
09/03/02 13:32:40
>>425
おまえがC++とCごっちゃになってどうする
429:名無しさん@お腹いっぱい。
09/03/03 09:27:07
Cのコード中でディレクトリの内容を比較するのはどうしたらいいか悩んでいます。
動作的には "diff -r dirA dirB" を実行した場合の結果と同じ処理をしたいのですが、
毎回 diff コマンドを呼ぶオーバーヘッドを避け、出来ればCのコードで実現したいと
思ってます。どうすべきでしょう?
1. UNIX の API にこの目的にふさわしいものがあり(何という名前?)、それを使う
2. 違うファイルかディレクトリに遭遇するまで地道に両者のディレクトリを辿るような
コードを自分で書く
3. diff のソースコードを入手し、自分のプログラムにリンクして使う
4. その他
430:名無しさん@お腹いっぱい。
09/03/03 09:57:03
お前の書くコードがdiffよりオーバーヘッドが少ないわけがない。
431:名無しさん@お腹いっぱい。
09/03/03 10:09:27
>>429
普通のdiffコマンドは高速でないアルゴリズム( O(ND) )を使ってるから、
gitとかpythonのライブラリに使われてるやつのが速い
ってわけで、速度を追い求めるなら差分取得のアルゴリズムについて調べてがんばれ
432:名無しさん@お腹いっぱい。
09/03/03 10:12:30
いや高速でないってこたないんですよ、それより速いのがあるだけで
433:429
09/03/03 10:29:38
あー書き方が悪かったかな。
もし diff ということで LCS とかそこらへんに脊髄反射されてたらごめんなさい。
自分が知りたいのは dirA と dirB の内容が違うか同じかだけなんです。
この場合むしろディレクトリの階層に効率よくアクセスできることが重要なんじゃないかと
思ったんですが、違います? fts とかですかね?
それにファイルを処理するようなソフトならありがちな処理のような気がするので、
どこかに適切なコードのサンプルがあればと思って...
434:名無しさん@お腹いっぱい。
09/03/03 10:37:16
>>433
> 自分が知りたいのは dirA と dirB の内容が違うか同じかだけなんです。
内容の比較は必要か
タイムスタンプの比較だけでいいか
同じファイル名が存在するだけでいいのか
rsync --dry-runの出力結果を使うとか。
435:429
09/03/03 10:50:52
>>434
「同じ」とはディレクトリ構造が同じで、その中に存在するファイルの名前&内容が同じ
という積もりです。
タイムスタンプは比較しません。
>rsync --dry-runの出力結果を使うとか。
はい、確かにそれも速そうですが、自分のプログラムだと比較的浅いディレクトリに
対してそれを何度も呼ぶことになりそうなので、C の何かの API で書いた方がいいのか
なあと。
ある意味 rsync みたいなプログラムなんですが、syncするときにいろいろカスタムな
ロジックを入れたいので、コードを書いているといいますか....
436:名無しさん@お腹いっぱい。
09/03/03 11:32:23
内容比較がcmp -sレベルでいいなら、
readdir/lstatで自分で書けばいいんじゃない?
質問せずに書けば、今頃書き終わっている頃かと。
437:名無しさん@お腹いっぱい。
09/03/03 13:31:30
ファイルとディレクトリの equality は適当に定義出来
るとして、↓みたいになるかな。
for (File src = each of srcDir) {
File dst = dstDir.Find(src);
if (dst == null) {
// src にしかない
} else if (src != dst) {
// 違う
}
}
for (File dst = rest of dstDir) {
// dst にしかない
}
each of …は都度 readdir して、Find は保持してるプー
ルから探して、無ければ見つかるまで readdir、してプー
ルに入れていく感じ。見つかったらプールから削除して
おいて rest of …でそれを得る。
438:名無しさん@お腹いっぱい。
09/03/03 14:07:34
両方コレクションにいれて、ソートして、
先頭二つ、計四つを比較しながら取り出せばいい。
四つになるのはどちらが欠けているかわからないから。
どれも違う場合、四つの中で小さいの二つを捨てればいい。
AB
AB
AB
BC
BC
AB
-
AB
CD
AC
BD
439:名無しさん@お腹いっぱい。
09/03/03 14:16:00
>>438
ファイル/ディレクトリの equality と同様に順序付け
も定義出来るなら(ソートするからには出来るはずだ)、
先読みする必要はない。マージソートの要領だ。
440:名無しさん@お腹いっぱい。
09/03/12 19:41:22
dirp=opendir(".");
printf("1 :%d;\n",telldir(dirp));
printf("2 :%d;\n",telldir(dirp));
printf("3 :%d;\n",telldir(dirp));
closedir(dirp);
とすると返す値は1,2,3とどんどんインクリメントしていくだけだし
seekdirは無反応rewinddirは巻き戻すばかりかtelldirをひとつ進めるだけ
readdirとかはちゃんとできているんだけれど
何か呪文とかいるのかダメダメな関数なのか情報please
441:名無しさん@お腹いっぱい。
09/03/12 19:51:28
>>440 OSはFreeBSDです。
442:名無しさん@お腹いっぱい。
09/03/12 20:15:55
たぶん実装がおかしいんだろう。MacOS Xも同様らしい。
URLリンク(idm.s9.xrea.com)
dirent読むのにtelldirやseekdir使うようなやつはいないから放置されてると想像。
443:名無しさん@お腹いっぱい。
09/03/12 20:24:17
追加。このへん関係あるかも。
URLリンク(www.freebsd.org)
444:名無しさん@お腹いっぱい。
09/03/12 20:32:49
>>440です。rewinddirの記述は間違っていました。
rewinddirとreaddirだけが使えます。
で調べたらscandirというのがありました。
mallocしてくれて配列に入れて関数指定すればsortもしてくれるようなので
コールバックもsort関数に入れます。
>>435もscandir+lstatでいいのでは?
しかしひどすぎるなtelldir+seekdir
ファイルの多いディレクトリーでちょろちょろよむもん作りたかったんだけど
一気読みが基本ですか?
445:名無しさん@お腹いっぱい。
09/03/12 20:38:50
とりあえずコールバック抜きのアルファソートやってみた。
c = scandir(dirname, &namelist, NULL, alphasort);
if(c == -1) {
puts("not opendir");
return(1);
}
printf ("%d\n", c);
for (i = 0; i < c; ++i) {
printf ("%s\n", namelist[i]->d_name);
free(namelist[i]);
}
free(namelist);
opendirの苦労は一体....orz
446:名無しさん@お腹いっぱい。
09/03/12 20:40:17
>>435
opendir -> ディレクトリをファイルとして開く
readdir -> ディレクトリのエントリを一つ読み込む(ポインタ一個進む)
seekdir -> ディレクトリのエントリを x 番目にセットする
telldir -> 今いるエントリ位置を報告する
を組み合わせて, 双方のエントリを比較して
1. 対象物の inode が同じなら処理スキップ
2. 対象物が ディレクトリなら, 自分自身を再帰的に呼び出す
3. 対象物がファイルなら中身を比較
すればええんちゃう?
447:名無しさん@お腹いっぱい。
09/03/12 20:46:16
既に読んだエントリに戻って読み直すシチュエーションがわからん。
仮にtelldir/seekdirの動作がまともでも、
いちいち物理的にディレクトリ読みに行くような実装だったりしたら、
遅いし最中に誰かがいじらんとも限らんし、いいことなしでは?
キャッシュしてるんだとすれば一気読みと何も変わらんし。
というわけで、telldir/seekdirは価値なしなんじゃないかと。
448:名無しさん@お腹いっぱい。
09/03/12 21:00:32
>>447
再帰して必要物がなくって、バックトラックするときに
変わってしまった状態を元に戻すために必要
recur_dir(...
here = telldir(...
if (このエントリが dir && 比較対象と違う)
if (recur_dir(...) == succeed)
return なんとか
ここに戻ってきた場合何がどうなってるか保証できない
seekdir(here)
続きの処理
449:名無しさん@お腹いっぱい。
09/03/12 21:56:26
何がどうなってるか保証できない状態なら
telldirしたところにseekdirしても保証できないだろう
450:名無しさん@お腹いっぱい。
09/03/15 11:44:20
ストリームとしてファイルリストをチェックしていくならseekとかは必須だと思うけれど
telldirもseekdirも機能しないんだから必要でも存在しない事実をどうする。
一旦readdirだかscandirでざっくりと読み込んで
それに対して操作するしか方法が無いのが現実。
バックアップとかで完全一致を目指す場合
「ほぼあっている」前提ならば結局ファイル自体の完全マッチをするしかないと思うが
事前にMD5とかSHA1とかとったリストをディレクトリーに入れとけばそれで済む気はする。
451:名無しさん@お腹いっぱい。
09/03/17 11:41:43
なんだ。ftsとかftwというファイル階層を歩くライブラリーが標準であるんじゃないか。
少なくともperlの「find::file」と同じ事はftwだけでできた。
最低の作り方でもftwのコールバックで配列を構築すればいいわけだし
scandirとか使ってバカみたいだった。
何気にファイルユーティリティが固まってきたよ。
452:名無しさん@お腹いっぱい。
09/03/17 14:33:22
opendir/readdir/closedirは、
fts, ftw辺りを書く人のためのシステムコールなんだよね。
まあ自分で書くのも悪くないけど、
scandir/telldirは使わないことをお勧めする。
>>448に書いてあるようなことは、
"concurrent data structure"と言うべきものだけど、
(Javaのiteratorのremove()のような)
UNIXのシステムコールは、"concurrent directory"を
直接的にはサポートしない。
昔、間接的にサポートするために、
update notifyが上がるUNIXenを見たことがあるが、
何だったか忘れてしまった…
453:名無しさん@お腹いっぱい。
09/03/17 15:25:32
変な用語持ち出して論理に飛躍のあること言い出す輩が出てきたな
454:名無しさん@お腹いっぱい。
09/03/17 16:33:31
用語が理解できないのを論理に飛躍があることにする輩が出てきたな
455:名無しさん@お腹いっぱい。
09/03/25 11:19:17
>>452
> opendir/readdir/closedirは、
> fts, ftw辺りを書く人のためのシステムコールなんだよね。
ちゃうやろ…と思って見てみたけど、ffs(ftw) って
"." を open() してあれこれしてるだけだよ。
URLリンク(www.freebsd.org)
456:名無しさん@お腹いっぱい。
09/03/25 11:42:34
>>455
違う。
open(2)は後から戻る時にfchdir(2)するため。
パスで辿ると別のところに行く可能性あるから。
457:名無しさん@お腹いっぱい。
09/03/26 19:54:47
>>456 少なくともFreeBSDでftsもftwもchdirのオプションをつけようがつけまいが起動時のディレクトリーがカレントだった。
つまり子ディレクトリーの階層に移っていても「getenv("PWD")」の返り値は
スタートの場所
コールバック書くときにchdirされていると思って組むとはまる。
素直にpathなりを使う。
詳細システムコールの実装はともかくファイルリストの取得も含めて
ファイルサイズとか必要なんだったらftwかftsを使えばかなり楽なわけで
組みもしないで妄言はいていないでとりあえず組んで自分なりのベストをみっければいいんじゃないかと思う。
ftwはソートされないので一様に処理する場合以外は使えないかなと思ったけれど
コード量がとにかく少ない
458:名無しさん@お腹いっぱい。
09/03/26 19:56:43
とにかくディレクトリー内のリストが欲しいならばftwでコールバックで配列に書き込む方法
ツリー取得したいならばftsが良い。
ftwの後腐れのなさは結構魅力
別の選択肢としてpopenでls -lRの返り値もらうという手もある。
perlなら「``」の返り値もらうだけだな。パースは適当にやってくれ
459:名無しさん@お腹いっぱい。
09/03/27 09:41:21
>>455
そのソースを読めばopendir/readdirしていることが分かると思うが?
軽く検索しただけでいい加減なことを言わない方がいい。
NFSで動かないfts(3)を実装するわけがない。
460:名無しさん@お腹いっぱい。
09/03/28 16:53:22
>>459は「実際に組んでいない」んだから机上の空論はほどほどにね、
>>455のは客観的なソース評価であるし間違ってはいないし
掲示板でいい加減な事をいっても何の問題もない
NFSなんて使わないでしらないけれどtelldir,seekdirすら動かないんだから
ftsがNFSで動かないくらい全然あってもおかしくない
461:名無しさん@お腹いっぱい。
09/03/28 18:09:18
>>460
> >>455のは客観的なソース評価であるし間違ってはいないし
> 掲示板でいい加減な事をいっても何の問題もない
( ゚д゚)ポカーン
462:455
09/03/28 22:14:14
ちゃうやろと思ったのは telldir/seekdir に関してだよ。
452 が opendir/readdir/closedir にしか言及してないってことに
気付いて無かった俺がアホなだけ。
463: ◆RubyFahc/I
09/03/31 15:55:27
rubyおたく向けのトリップ創りました。
RubyFahc/I : #NcM--Cセ{
Ruby.qKt3Q : #%C/Y:gmk
Ruby3r65m. : #h6d|TbE」
RubyWViHDk : #:jV|^?N~
Rubyi8CaTg : #jDt1G4`:
RubymzWnxQ : #!N{o6VヲJ
Rubyfo02Gg : #ヲYJ)ffn$
Rubyu9svnE : #+T-GT.Ti
RubyypieqU : #+,K:ヲ%v[
RubyIoAFuU : #?)V0M]c`
RubyNL3l2E : #C^?}8sヲq
RubyredCpo : #JU@UkdMy
Rubybk3Pyo : #hU@fQm,_
RubyYQ3Jtk : #m\4A?2'e
Rubyvjyg76 : #XIQ{N$J3
RubyS4Qmog : #/aKG.b\*
RubyPiJzfc : #_jq@zdZh
Ruby24.u4U : #l[Lz\Y)h
RubyVtS0bk : #pD'y$Zi\
Ruby4dt6ro : #「{Nv@f(0
RubymGCEfc : #9NXi[v|)
RubylUmOgY : #+(dK「@X{
RubypDsPgo : #HfLO0Nr8
RubyRlH2oc : #/2)k|Gpu
RubyYbNPnc : #シzU2.ヲ.L
RubyyRsYeU : #/Spddm+A
RubydSrMqw : #mx+9{[)c
RubyiMB9bQ : #KMlaIaOr
RubyOerZfE : #11J\EXK8
464: ◆Ruby.c34.Q
09/03/31 15:57:16
Rubyl/JuN. : #{^3l?jM@
RubyMyu4iA : #g{@Sセ,'5
RubysBAU/s : #slubZ7サd
RubyeT6Qio : #,)gAzFEX
RubyDyS/e. : #サAbV1lG/
RubyRfMLNM : #Wシ」w[8}h
Rubytc3JHQ : #Z=o\ib[サ
Ruby1lE7L6 : #h1シ{A-kj
RubyuUag0Y : #gヲ8!@W$n
RubyG6B8e6 : #0+7サ=5VH
RubyGguz1Q : #-g5i9\K8
RubyqzNGOo : #~t(mCuXQ
RubycQw0oM : #]%}-N(Me
RubynWWUBo : #PrU?「シJJ
Ruby.c34.Q : #IS+zヲABセ
RubyDdsChM : #qVKZI+{=
RubyBu2YeQ : #B@[.Q-o2
RubyoIbx4o : #ヲ2:qwsJD
RubyaL3Nm. : #k\uS\tFe
RubyRGJW9Y : #9)`H%Pc+
RubyKHrqAU : #zrB_X@tC
RubydeGFDA : #6「31rNEI
465:名無しさん@お腹いっぱい。
09/04/03 03:46:26
UNIXとC++どっちがいいでしょうか?
466:名無しさん@お腹いっぱい。
09/04/03 04:00:32
MACがいいと思います
467:名無しさん@お腹いっぱい。
09/04/03 05:00:56
マクドってゆえや
468:名無しさん@お腹いっぱい。
09/04/03 18:34:28
取り敢えず今「ディレクトリ取得」スレ的な流れだと思うんだけど
NFSってみえないといけないの?あとサン婆
httpかftpとローカルデバイスだけあればいいという考えではだめ?
469:名無しさん@お腹いっぱい。
09/04/03 18:39:46
今時ディレクトリをread(2)出来るアホなUFS on UNIXは、
BSDくらいだと思うが、他にもあればリスト化希望。
470:名無しさん@お腹いっぱい。
09/04/03 20:57:02
プログラマーになりたい・・
作曲家になりたい・・・
フラッシュ職人になりたい・・
絵師になりたい・・
俺にできるだろうか?
471:名無しさん@お腹いっぱい。
09/04/03 21:05:01
なるだけならすぐなれる
472:名無しさん@お腹いっぱい。
09/04/03 21:14:23
「プログラムを組む」のと「プログラマーになる」のは違う
「適当な曲を作曲する」のと「作曲家になる」のは違う
(以下同)
よって、「なるだけ」でもすぐにはなれない
473:名無しさん@お腹いっぱい。
09/04/03 21:27:55
そうか・・
やはり必要なのはCですよね
474:名無しさん@お腹いっぱい。
09/04/03 21:29:10
プログラマになりたくてなるんじゃないなってしまう者がプログラマ
貧弱一般人がプログラマになろうとしてもここはUNIX界なので人工的に淘汰されるのが目に見えている
475:名無しさん@お腹いっぱい。
09/04/03 21:37:57
なってしまう・・とはどういうことかもう少し詳しく聞かしてほしい
476:名無しさん@お腹いっぱい。
09/04/03 21:41:10
ようするに、才能じゃね?
477:名無しさん@お腹いっぱい。
09/04/03 21:47:36
このプログラム腐ってやがる→仕方が無い、自分で直すか…
このプログラム良いんだけど、ちょっと機能が足りないな→仕方が無い、自分で直すか…
このプログラム良いな、どうやって実装してるんだろう→ソース読むか…
新人プログラマは頑張ってるんだけど、仕事ができねえ→仕方が無い、俺が実装するか…
どうも業務の効率が悪いな→一丁、便利スクリプト作ってやるか…
俺は↑こんな感じでプログラムを書く様になったけど、
>>474が言ってるのはまた別の事かな。
478:名無しさん@お腹いっぱい。
09/04/03 21:59:08
>>474
の言葉のせいで無理なような気がしてきた(´・ω・)
479:名無しさん@お腹いっぱい。
09/04/03 22:33:27
つまり、それほど、重く受け止めてしまうほどの意味深い言葉に聞こえたのです
480:名無しさん@お腹いっぱい。
09/04/04 10:45:18
>>474はブロントさんだろう。一級プログラマとして
一般人から見ると憧れの的
481:名無しさん@お腹いっぱい。
09/04/04 11:11:11
>>480
ブロントさん==一級プログラマ
????
482:名無しさん@お腹いっぱい。
09/04/04 11:14:06
>>477
お前、素質あるな。
483:名無しさん@お腹いっぱい。
09/04/04 12:31:19
>>477
ハッカー気質をお持ちだね。良いことだ。
484:名無しさん@お腹いっぱい。
09/04/05 21:54:37
初歩的な質問ですが、
みなさん童貞ですか?
485:名無しさん@お腹いっぱい。
09/04/05 22:20:56
いいえ、妖精です。
486:名無しさん@お腹いっぱい。
09/04/05 22:49:29
君もウィザードだろ?
487:名無しさん@お腹いっぱい。
09/04/05 23:06:39
Perlのモジュール WWW::Mixi でのログインを http ではなく https にして
安全にパスワードを送信するように改造するには何を使えばいいのでしょうか?
この辺をこういじってみたら?など詳しい方アドバイスを頂ければ幸いです。
488:名無しさん@お腹いっぱい。
09/04/05 23:28:16
いいえ、ワイザードです
489:名無しさん@お腹いっぱい。
09/04/06 12:47:12
41で童貞です
490:名無しさん@お腹いっぱい。
09/04/06 17:06:36
>>487 WWW::MixiはしらないけれどNet::SSLeayかCrypt::SSLeayが入っていれば
lwpでhttpsが使えるはずだから
今httpsが使えないとしたらどちらか入れて同じコードで試してみたら?
491:名無しさん@お腹いっぱい。
09/04/06 17:19:05
とりあえずFlashがやりたいならば
java +flex4 SDK
wine+Flashの適当なバージョン
flasm swfmillそしてエディターとxtermがあればかなりのことができる。
mtascだってつかえる。
CでcairoとSDLとffmpegを駆使すればFlash 用の絵描きツールも作れるよ
まぁとりあえずhtmlでアドベンチャー見たいなものを作る程度の技能がないとだめだね、
絵はローグとかつくーるじゃないけれどとりあえず借り物でもいいんじゃないの
492:名無しさん@お腹いっぱい。
09/04/09 01:40:40
プログラミングからは少し外れますが・・・
HogeHugaはキャメルケースって言いますが、hoge_hugaは何と言うのですか?
493:名無しさん@お腹いっぱい。
09/04/09 12:56:25
>>492
パスカル
494:名無しさん@お腹いっぱい。
09/04/11 16:28:13
>>492
snake case
495:名無しさん@お腹いっぱい。
09/04/24 07:19:05
underscore styleというのもどっかで見たような気がしなくもない
496:名無しさん@お腹いっぱい。
09/04/25 12:15:33
PF_UNIX/SOCK_DGRAMにデータを送る時、FreeBSDでは
送り元が無名になってしまい、受け取った側が
返答を送り返すことができない。(PF_INETだともちろんソースポートが付くが)
だから、間に合わせのファイル名をbindしてから送信する必要あり。
あとでunlinkしないと行けないし、美しくない。
Linuxだと、PF_UNIX/SOCK_DGRAMでも、bindしなくても
勝手に名前を割り当ててくれて、不要なソケットファイルも作成されないんだが、
そういうことはできないの?
497:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/05/02 14:01:28
>>498
だから、そうは書きたくないので、
templateを使って奇麗にまとめる方法を質問してるんですが。。
他にわかる方お願いします
↓
500:名無しさん@お腹いっぱい。
09/05/02 14:53:03
何が不満なのか言えよ。
どうしても template だけのコードにしたいんなら、 boost の enable_if に
is_same とか突っ込んで使えばいいかもしれない。
501:名無しさん@お腹いっぱい。
09/05/02 16:53:57
>>498 の方法では、func()の一方のargの型の種類が不定の時対応不能。
つまり、
片方の func() は argが HOGE型またはFOO型の場合
もう片方の func() は argが「HOGE型またはFOO型」以外の場合すべて
だったとしたらどうする?
502:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/05/02 17:13:52
>>502
「HOGE型またはFOO型」というのが、2種類だけじゃなくて10種類くらいあったら
template本体以外に void func(HOGE arg) とかを全部列挙するのが
すごくダサイんですが。
あと、本来の関数名以外に funcHOGEFOO()という関数名をつけなければいけないのも
名前がぶつかるかも知れないし美しくない。
504:名無しさん@お腹いっぱい。
09/05/02 17:18:14
なんで人にコード書かせて後から条件増やして文句つけるの?
そういう遊びなの?
アホなの?
505:名無しさん@お腹いっぱい。
09/05/02 17:19:35
>>503
何がしたいのかわからんが、ごちゃごちゃ言わずにさっさと boost::enable_if で好きに片付けろよ。
506:名無しさん@お腹いっぱい。
09/05/02 17:21:22
アホなんだろ。
507:名無しさん@お腹いっぱい。
09/05/03 00:15:37
どうしてこんなことに
508:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/05/03 12:33:58
CでもC99じゃないとダメじゃないの?それ
510:名無しさん@お腹いっぱい。
09/05/03 13:03:34
C++だったら普通コンストラクタ
511:名無しさん@お腹いっぱい。
09/05/03 13:10:29
>>510
コンストラクタにしても、メンバの順序(コンストラクタの引数の順序)を考えなくて
いいように >>508 の要求を満たすことはできないのでは?
メンバの型が違えば方法はあるけど、型が同じならできないでしょ。
512:名無しさん@お腹いっぱい。
09/05/03 13:51:41
>>510
コンストラクタだと実行時に「代入」されるからプログラム的に無駄でしょ。
「代入」じゃなくて、静的データで初期化したい。
あるいはテーブルのようなconstデータを持ちたい場合、
コンストラクタじゃなくて「初期化宣言」したい。
513:名無しさん@お腹いっぱい。
09/05/03 14:37:22
>>512がオート変数の初期化を、「代入」以外の方法(静的データ?)で行う、
画期的に効率的な方法を開発したようです。
514:名無しさん@お腹いっぱい。
09/05/03 14:54:15
>>513
>>508 では確かに auto変数だが、
関数外に const static で持ちたい場合もあるしね。
そういう場合、struct member指定で順不同で初期化するのはどうするのかね?
やっぱ C++じゃ無理なのかい?
515:名無しさん@お腹いっぱい。
09/05/03 16:14:47
なんかさー、そこまでこだわるなら
struct A a;
a.i = 123;
a.j = 456;
でいいじゃんって感じ。
元々auto構造体変数のメンバ初期化自体邪道だったんだし。
516:名無しさん@お腹いっぱい。
09/05/03 16:23:57
>>515
すでに指摘されてるように、それだと「代入」。
質問は「初期化」の方法。
auto変数じゃなくて、staticの時、どうするよ?
517:名無しさん@お腹いっぱい。
09/05/03 16:30:14
C++の規格上出来ないんだから、どうしてもやりたいならC99で記述してリンクすればいい。
518:名無しさん@お腹いっぱい。
09/05/03 16:34:57
なんだ、できないのか。しょぼいな。
519:名無しさん@お腹いっぱい。
09/05/03 17:59:22
コンストラクタ的にしとかないとメンバ変数増えたときに困りそうだけど。
520:名無しさん@お腹いっぱい。
09/05/03 23:59:36
>>519
まあこんなしょうもないところにこだわる人にそんなことが理解できるはずもなく。
521:名無しさん@お腹いっぱい。
09/05/05 10:21:50
そういうエディタ内でのお遊びはム板でやればよろし。
>>517 >>520 で正解でてるからいうこた特に無いけれど
それ以前に
基本は「ある仕様を覚えろ」じゃないかと思う。
「書き方」にこだわりがあるなら
そのコーディングを無難にコンパイルできるマクロツール作ればいいまでのこと
テキストレベルの問題だ。
522:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/05/06 13:33:15
X Window Systemのプログラミングの参考になる書籍
で現在も通用するものってどんな者が有りますか?
具体的にはC言語からXlibなどをつかってツールキットを使わずに
プログラムを作成する方法を解説した書籍があればお教えください。
tclやgtkやqtの経験は有るのですが、ちょっとしたプログラムを
作るのにあまり重たくしたくないのでC言語で直接利用したく思います。
524:名無しさん@お腹いっぱい。
09/05/07 10:40:39
>>523 書籍はしらないけれど
URLリンク(xjman.dsl.gr.jp)
URLリンク(www-yano.is.tokushima-u.ac.jp)
あとりを参考にしてみては?あとめぼしいportsのソースが参考になる。
ただxlibとSDLと使用メモリとか大してかわらんよ。
描画面も考えると
xlib→cairo→pango
ないしは
SDL→cairo→pango
とやっていくと軽くて学習効率が高く見栄えのする結果が得られると思う。
それと「コマンドとして呼び出して結果をもらう」とか
「perlやshを呼び出す」事も選択肢に入れるとコードと使用リソースが小さくできる。
525:名無しさん@お腹いっぱい。
09/05/07 10:46:27
>>524でcairoを出しているのはxlibだときれいなテキストが書きにくいので
freetypeを叩くより楽だからの意味合いが強い。
526:名無しさん@お腹いっぱい。
09/05/07 17:08:06
>>524-525
ありがとう御座います。
がんばります。SDLはいろんなOSで使えるようですね。
いろいろ勉強してみようと思います。
527:名無しさん@お腹いっぱい。
09/06/17 09:35:24
>>523
亀レスだがそういう解説書なら
Xアプリケーション・プログラミング1 Xlib編
しかし書籍の方が現在では流通していないかも。
どこかの図書館にはあるだろうからその場合は最寄りの図書館で取り寄せてもらって。
528:名無しさん@お腹いっぱい。
09/06/19 17:16:58
下図のように自己交差しているリージョンを、
┏━┓
┃ ┃
┗━╋━┓
┃ ┃
┗━┛
交点で個別のリージョンに分けたいんですけど、
┏━┓
┃ ┃
┗━┛┏━┓
┃ ┃
┗━┛
簡便な方法ってないものでしょうか。よろしくお願いします。
529:名無しさん@お腹いっぱい。
09/06/19 17:23:20
すみません、スレ違だったようです。取り下げます。
530:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/07/13 15:11:25
すみません、スレ違だったようです。取り下げます。
532:名無しさん@お腹いっぱい。
09/07/13 15:13:06
>>531
勝手に取り下げないで下さい
533:名無しさん@お腹いっぱい。
09/07/13 17:19:19
>>530
えっと、そういう機能を持った pingコマンドの別種を自分でプログラムしたい、
って質問だよな?
pingのようにICMPを送受信するには、
SOCK_RAWを使ったソケットプログラムが必要だが、
その辺は理解してるのか?
534:名無しさん@お腹いっぱい。
09/07/13 17:26:55
単にパイプで適当なワンライナーにつなげば済む程度の話じゃね?
535:名無しさん@お腹いっぱい。
09/07/13 17:32:39
>>534
それだとプログラミングじゃないからやっぱりスレ違い。取り下げなければならない。
536:名無しさん@お腹いっぱい。
09/07/13 17:58:32
>>533
muninで出力結果をグラフにしたいだけです
537:名無しさん@お腹いっぱい。
09/07/13 18:01:43
>>536
じゃあ、Xのプログラムも必要だな。
ツールキットは何を使う予定?
538:名無しさん@お腹いっぱい。
09/07/13 18:37:33
>>537
必要ねぇだろ?嘘教えるなよww
539:名無しさん@お腹いっぱい。
09/07/13 18:40:19
ここはプログラミング質問すれだよ。
muninの出力みたいな表示を行なうプログラムを自作したいんだろ?
pingのソースを参考にソケットプログラムとXのプログラムが必要だな。
540:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/07/16 13:34:45
>>540
perlを使うと「スクリプティング」
(シェルスクリプトも同様)
ここは「プログラミング」
よって、スレ違い。
542:名無しさん@お腹いっぱい。
09/07/16 19:03:06
>>541
スレ違いじゃないと思うけど。
別に何使ったっていいじゃん、こだわること無い。
543:名無しさん@お腹いっぱい。
09/07/17 02:10:39
アクションゲームプログラミングって本を参考に
プログラミングしようと思ってるんですけど
ひとつ疑問が、
Directx SDKのバージョンが違うんですけど
最新版でも問題はありませんか?
544:名無しさん@お腹いっぱい。
09/07/17 08:13:33
この板では回答は得られません
545:名無しさん@お腹いっぱい。
09/07/18 14:10:53
まぁそう言わずに
>>543
君には無理
546:名無しさん@お腹いっぱい。
09/07/19 21:14:09
>>541 プログラムの意味分かってないね、
547:名無しさん@お腹いっぱい。
09/07/19 21:16:18
>>543 ここはUNIX板、最小公倍数はwine使用時のdirectXかSDL+OpenGL
アクションゲームは素直にFlashで作った方がいいんじゃない。
アスキーアートでも写真でもいいから
とりあえずキャラ画像そろえるのが先決
548:名無しさん@お腹いっぱい。
09/07/19 21:17:58
>>541 cairoもImageMagickもperlバインディングもあるけれど
Cでの実装は常識の範疇だよ。ちなみに、
549:名無しさん@お腹いっぱい。
09/07/21 20:21:55
すいませんちょっと質問させてください。
いま、データのインポートをする簡単なプログラムをCで書いているところなのですが、原因のよくわからないエラーが出てしまっています。
このあとfloat型ポインタのpにデータをいれていきたいのですが、何故かfloat *pのコメントアウトを外すと、
unnkoを二回出力したあとセグメンテーションエラーになるのです。コンパイルは通ります。
float *pを米アウトした状態だと普通に動きます。
float型以外の型の変数やポインタを用意しても同じようなエラーがでていまい、これ以上変数を増やせないんです。
開いてるファイルは8kぐらいの大きさだし、変数の数も多いわけではないのでスタックを食いつぶしてるようにも思えません。
誰か間違いに心あたりありませんか?
ちなみにosはScientificLinux5.3でコンパイラはGNUの4.1です
↓ソースコードはこちら
550:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/07/21 20:30:54
>>550
char *inbufがタダのポインタのままで、メモリ確保してないのが原因。
//float *p; のコメントとかコメントアウトについては、
たまたまそれでメモリ配置が変わってたまたま動いたり動かなかったりしてただけ。
正しくは char inbuf[128]; でちゃんとメモリ確保しろ。
552:名無しさん@お腹いっぱい。
09/07/21 20:36:01
>>551
早いレスありがとう
メモリ確保は既にやった気がするけど夢だったかもしらん。ちょっとやってみる
553:名無しさん@お腹いっぱい。
09/07/21 20:43:13
>>551
キターーーーーーーーーー
ちゃんと動きました。ほんとありがとう
554:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/07/21 20:51:54
>>554
解決した後に蛇足なこと書くなよ。>>551 の回答者とは別人の人よ。
> …fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…
おいおい、FILE *fp; に対して &fp[0] って意味ないだろ。
(コンパイルすれば単に fp と同じになるにしても)
書きたかったのは &inbuf[0] じゃないのか?
556:名無しさん@お腹いっぱい。
09/07/23 00:37:06
>>530
スレちレス
$ ping -c 1 -t 10 host | tail -1 |awk -F/ '{print $5}'
557:名無しさん@お腹いっぱい。
09/09/04 00:52:32
Linux の RAW ソケットで送信パケットをキャプチャし
ないのってどうすんだっけ? どっかのサイトで見たんだ
けどキーワードが悪いのか見つからない…。
558:名無しさん@お腹いっぱい。
09/09/04 12:09:44
libpcap使いなさい。
559:名無しさん@お腹いっぱい。
09/09/04 12:13:41
すみませんが詳しい方のみ回答をお願いします
560:名無しさん@お腹いっぱい。
09/09/04 18:21:06
回答まだでしょうか?急ぎです。
561:名無しさん@お腹いっぱい。
09/09/04 19:31:34
みんな自分が詳しくないということを自覚しているから何も
言わないコトにしたんだと思うよ。(ということにしておく)
562:557
09/09/05 00:33:12
>>560
> 回答まだでしょうか?急ぎです。
実際急ぎだったんだがお前は俺じゃないだろ(w
キーワードは PACKET_OUTGOING だった。
563:名無しさん@お腹いっぱい。
09/09/10 20:16:00
>>560
出てこいよ池沼
564:名無しさん@お腹いっぱい。
09/09/21 18:30:40
すみませんが詳しい方のみ回答をお願いします
565:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/09/22 22:53:19
使ってないなら -lhogeつけなきゃいいのに
567:名無しさん@お腹いっぱい。
09/09/22 23:05:07
>>566
じゃなくて、使うかどうかわからない場合でも、
-lhogeとか付けておいて、実際に使われなかったらリンクしないようにしたいんだが。
(別の関数から間接的に呼び出されたりして、ライブラリの関数を使ってるかどうか
簡単には判断できないことがある)
静的ライブラリ(libhoge.a)なら可能なのに、
動的ライブラリの場合のみ不可能なのは納得いかないんだが。
ldが、本当に関数を使ってるかどうかチェックするのをさぼってるとしか
思えないんだが、これバグじゃないの?
568:名無しさん@お腹いっぱい。
09/09/22 23:33:53
何でバグって思うのか分からない。わざわざ -lhoge を付けてるのに
付けてないことにしてほしい、って方がワガママでしょ
569:名無しさん@お腹いっぱい。
09/09/22 23:35:59
気に入らなくても、ldはそのように作られているのだから、不要なライブラリを
リンクしないようにするしかない。
570:名無しさん@お腹いっぱい。
09/09/22 23:41:42
>>569
じゃあ、なぜ ldはそのように作られたのか?
関数を(というかシンボルを)使ってるかどうかのチェックぐらい、
簡単にできそうなのになぜしないのか?
571:名無しさん@お腹いっぱい。
09/09/22 23:41:52
>>567
実行時までシンボル解決出来ないんだから、そのライブラリが
本当に呼び出されないかどうかは ld にも分からないんだよ。
だから ld は悪くない。
572:名無しさん@お腹いっぱい。
09/09/22 23:46:17
>>567
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。
573:名無しさん@お腹いっぱい。
09/09/22 23:47:04
>>571
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。
574:名無しさん@お腹いっぱい。
09/09/22 23:51:29
>>571
とりあえず、コンパイル時の判断で不要と思われるライブラリは
(動的)リンクしないのをldのデフォルトにしておいて、
コンパイル時のシンボルレベルの判断では使っていないように見えて、
実際には実行時に使われるような特殊なライブラリの場合のみ、
--force-link みたいなオプションを新設して強制リンクさせればいいだろ。
デフォルトではシンボルを使ってなければリンクしないことにして。
575:名無しさん@お腹いっぱい。
09/09/22 23:54:54
バイナリパッケージでインストールされたコマンドとか見てると、
実際には使ってない動的ライブラリがリンクされてたりするね。
(C++とかXの関係のライブラリにそういうのが多い)
そのソースのMakefileから、-lxxx を外してもコンパイルできたりする。
これって無駄だし、ldが適切にリンク判断してれば
もっと効率の良いバイナリができていたはずなのに。
576:名無しさん@お腹いっぱい。
09/09/22 23:56:33
リ1「こいつ使ってないライブラリをリンクしようとしてるぜ」
リ2「あちゃー、何だそれ」
リ1「でもわざわざ余計な事をするんだから何か考えがあるんだろう」
リ2「リンクする必要が無いなら最初から省けば良いからな」
リ1「仕方が無い、面倒くさいけどリンクしてやるか」
リ2「これでバグとか言われたら最悪だな」
577:名無しさん@お腹いっぱい。
09/09/23 00:00:37
>>576
同じソースでも環境によってライブラリが必要だったり不要だったりする場合がある。
そういう場合、共通ソースでは念のため -laaa が付けられている。
リンカーが「使ってないライブラリをリンクしようとしてる」と判断できるなら
それをリンクしないようにするべき。
578:名無しさん@お腹いっぱい。
09/09/23 00:01:28
>>573
それはライブラリが足りない場合だろ。
ちゃんと場合分けして考えようぜ。
シンボルが呼び出されないかどうかは保証出来ないんだよ。
別の動的ライブラリから呼び出されるかもしれないし、
動的ライブラリは差し替え可能だから何でもありだ。
ツールは人間様の指示を無視する事は出来無いの。
579:名無しさん@お腹いっぱい。
09/09/23 00:02:19
>>576
それと同じ理屈を libxxx.a に適用すると論理破綻。
580:名無しさん@お腹いっぱい。
09/09/23 00:05:06
>>578
だから「保証はしなくてよい」
ldのデフォルト動作として、リンクしないようにして、
それでまずい場合(レアケース)のみ、--force-linkみたいなオプションで
強制リンクすればいいだけ。
実際、知らず知らずのうちに使ってるバイナリが
不要なライブラリをリンクしてるんだよ。
ldの動作をちょっと改良するだけで、
それらがすべて改善できるだろ。
581:名無しさん@お腹いっぱい。
09/09/23 00:07:46
>>579
動的と政敵の違いを考えることが無いお前の頭の中が破綻してる。
582:名無しさん@お腹いっぱい。
09/09/23 00:08:33
>>573
・それは、ライブラリが足りてない事がわかる事を意味していて、
ライブラリが余分だという事は意味してないよな。
・ldがそのようなライブラリをリンクしないと、dlsym(NULL, ...)が困るかもしれない。
583:名無しさん@お腹いっぱい。
09/09/23 00:09:13
>>578
場合わけじゃない。同じ場合だ。
「ライブラリが足りない場合」ではない場合はリンクしない。
で問題ないだろ。
別の動的ライブラリから呼び出されるような場合でも、
ld時にそのライブラリも -lxxx2 で指定するのだから、
結局ldがすべて判断できる。
dlopen()の場合は考慮しないということで。
584:名無しさん@お腹いっぱい。
09/09/23 00:09:30
>>580
残念ながら改悪だと思われ。
585:名無しさん@お腹いっぱい。
09/09/23 00:10:24
>>583
考慮しろよww
586:名無しさん@お腹いっぱい。
09/09/23 00:11:14
>>579
だから場合分けして考えろって。
違う物に同じ理屈で挑むなよ…
もし良いアイデアだと思うなら、自分で実装してみな。
俺等は使わないけど、君みたいな人が他にもいるかもしれん。
587:名無しさん@お腹いっぱい。
09/09/23 00:11:24
>>582
dlopen()するようなプログラムなら、
そのプログラムの「実行時の責任」で必要なライブラリを
プログラムでロードするから、今の議論とは関係なし。(考えなくて良い)
588:名無しさん@お腹いっぱい。
09/09/23 00:12:20
>>587
dlsym(NULL, ...)って書いただろ。dlopenしないんだよ。
589:名無しさん@お腹いっぱい。
09/09/23 00:13:26
>>584
じゃあ、譲歩して、
ldのデフォルトは従来のままとして、
--no-link-unneeded みたいなオプションを付けたら、
不要なライブラリをリンクしない、ということでいいだろ?
どうしてそういうオプションが ldにないのか?
590:名無しさん@お腹いっぱい。
09/09/23 00:16:00
>>588
どっちでも、今の議論では同じこと。関係ない。
591:名無しさん@お腹いっぱい。
09/09/23 00:19:11
何でもかんでも『同じこと』なんだな。
ちょっと場合分けしたらスッキリ理解出来るのに…
まぁ、ライブラリをロードする時間とメモリが惜しいなら、
自分が使うライブラリくらい把握しとけって事だな
592:名無しさん@お腹いっぱい。
09/09/23 00:24:21
>>590
関係有るだろ、-lでリンクしたライブラリを参照するんだから。
593:名無しさん@お腹いっぱい。
09/09/23 00:27:50
--as-neededとかあるけど?
594:名無しさん@お腹いっぱい。
09/09/23 00:28:10
>>592
dlsym()とかを使わないような普通のプログラムで、
環境対応のため念のため付けられている -lhoge オプションを、
ldが適切に判断してリンクしないようにしたい。
という議論で、dlopen()/dlsym()等で事情がある場合は
ldに --force-linkなどのオプション指定して対応すれば良い話で、
その --force-linkなどのオプションが必要になるプログラムについては
話の本題ではないので、結局 dlopen()/dlsym()等の件は関係ないということ。
595:名無しさん@お腹いっぱい。
09/09/23 00:30:35
>>589
お前の糞みたいな益の無いアイデアで作り変えた糞ソフトをldと呼ぶな
596:名無しさん@お腹いっぱい。
09/09/23 00:32:38
>>593
詳しい人登場。(正解)
「-lhoge付けたんだから絶対にリンクするべきだ」とか、
「実行時じゃないと判断できない」とか
質問者を叩いていた人、全員不正解。
597:名無しさん@お腹いっぱい。
09/09/23 00:34:37
>>595
つまり、現状の ldにすでに備わっている
「--as-needed」オプションは、
「糞みたいな益の無いアイデア」なんですね、わかります。
作り変えなくても、すでにそう作られてるんですが、、
598:名無しさん@お腹いっぱい。
09/09/23 00:41:49
>>597
だから、お前のアホみたいなアイデアで作り変えたゲテモンをldと呼ぶなと言ってるんだ。
作り変えないならldそれはそもそものldだ、普通にldと呼べゴミカス
599:名無しさん@お腹いっぱい。
09/09/23 00:43:36
>>597
へぇ、じゃあ現状のldはデフォルトで使ってないものをリンクしないんだね?
違うよね?お前の糞ソフトはldじゃないんだよ。
600:名無しさん@お腹いっぱい。
09/09/23 00:47:37
>>598-599
見苦しいぞ。
--as-neededオプションをすぐに答えられなかった奴は素直に負けを認めとけww
601:名無しさん@お腹いっぱい。
09/09/23 00:47:58
>>596
>「実行時じゃないと判断できない」とか
これは正しいだろ。--as-needed が使えるのは
プログラム側でシンボルテーブルを参照していない
限りにおいてのみだぜ。これも場合分けって奴だ。
当たり前だが GNU の ld 固有の機能だから環境依存に
注意して使ってくれ。
602:名無しさん@お腹いっぱい。
09/09/23 00:49:56
あー、ちなみに Mac OS X では使えない。
必要とされていないのか、何か問題があるのかは知らん。
603:名無しさん@お腹いっぱい。
09/09/23 01:02:27
as-needed がデフォルトの動作でなくて、オプション付けないと有効にならない
あたりから察しようぜ
604:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/09/23 01:26:40
URLリンク(opensource.apple.com)
ソースを見てみても独自っぽい感じですね。
C++ で実装されてますし。
606:名無しさん@お腹いっぱい。
09/09/23 03:37:07
>>600
見苦しいぞ、おまえ
607:名無しさん@お腹いっぱい。
09/09/23 04:41:57
>>565 の
> libhoge.aの中身は使われず、libhoge.aを付けずに
> gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、
> 無駄になりません。
何が無駄?
mmap された text/data segment はさわらなきゃ
主記憶に page in されへんと思ってたんやけど…
俺の認識違い???
教えて, えらい人.
608:名無しさん@お腹いっぱい。
09/09/23 08:37:57
>>607
shared lib本体が主記憶に page in されないとか、そういう問題じゃないと思う。
たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした
バイナリができてしまって、あとでライブラリがバージョンアップした時
コマンドが実行できなくなってしまうなどの問題がある。
実際に呼んでいて、ライブラリがないから実行できないのなら仕方ないが、
実際には呼んでないのにコマンド自体が実行できなくなってしまうのはおかしい。
それとも、実行時にリンクしてるライブラリが見つからなくても、
実際に呼び出していないならコマンド本体を実行させるような方法ってある? ないだろ。
609:名無しさん@お腹いっぱい。
09/09/23 08:40:03
libhoge.so.* が不要なはずなのに -lhoge でリンクされていて
別のシステムで libhoge.so.* が無い場合に
上の prog.c だけが使いたい人にとっては
無駄に libhoge.c がどこで提供されてるか探してきて
そのコンパイルから何から必要になるじゃん?
だから不要なものはリンクしないで欲しいんだ
610:名無しさん@お腹いっぱい。
09/09/23 10:51:30
>>608
へ?どうしても動かしたいならdynamic sectionの書き換えくらいするでしょ。
611:名無しさん@お腹いっぱい。
09/09/23 11:20:31
>>608
>たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした
>バイナリができてしまって、あとでライブラリがバージョンアップした時
>コマンドが実行できなくなってしまうなどの問題がある。
これはリンカー以前の問題だよ。
リンカーで解決しようとする前に開発環境を見直した方がいい。
そもそもこんな事が問題になる事自体がおかしいぜ。
古いバージョンのライブラリも同梱しておけば良いだけの話だし。
どんなOSを使ってるんだ?
それと、そのライブラリを絶対に使っていないと言う確信があるなら、
ダミーのライブラリを噛ませれば良いんじゃね?
612:名無しさん@お腹いっぱい。
09/09/23 11:25:13
--as-needed で問題は解決済み。
元の質問は解決してるのに、
--as-needed を答えられなかった人は、
いつまで負け惜しみの言い訳を続けるんだww
613:名無しさん@お腹いっぱい。
09/09/23 11:39:15
解決したと思ってるのが…
614:名無しさん@お腹いっぱい。
09/09/23 11:49:10
>>612は釣りだろ、本人ならあれを解決したなんていわない
615:名無しさん@お腹いっぱい。
09/09/23 12:35:39
>それと、そのライブラリを絶対に使っていないと言う確信があるなら、
>ダミーのライブラリを噛ませれば良いんじゃね?
まあそうだな
616:名無しさん@お腹いっぱい。
09/09/23 18:17:14
gentooでas-neededつけると結構動かなくなるのがあったから使うの止めたよ.
-lの順番とか適当だと動かなくなったりするし。
検索したらヒットしたので貼っとく
--as-needed introduction and fixing guide
URLリンク(www.gentoo.org)
617:名無しさん@お腹いっぱい。
09/09/24 16:01:34
プログラムの話でなくてコンパイルの仕方のレベルの無駄話が続いているなぁ。
どうせhello worldかコピペしか作れない癖に
スレ違いだ。
618:名無しさん@お腹いっぱい。
09/09/24 20:05:41
無駄話に無駄なオチがついたな。じゃあ次の質問よろしく。
619:名無しさん@お腹いっぱい。
09/09/24 23:57:12
シェルスクリプトでプログラムを書いてるのですが
$* と $@ の使い分けがよくわかりません
620:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/09/25 07:17:20
>>619
シェルスクリプト総合 その15
スレリンク(unix板)
622:名無しさん@お腹いっぱい。
09/09/25 19:47:46
C言語で自分のOSの種類によって場合分けして実行するにはどうしたらいいんでしょう?
今は、
system("uname > tmpfile");
ってやってから、tmpfileを fopen()で開いて中身を読んでますが、
これだと無駄な気がしています。
623:名無しさん@お腹いっぱい。
09/09/25 21:27:43
>>622
そのまんま、uname() っていう関数がある。
sys/utsname.h
でもふつうはビルド時に ifdef で分けるんじゃないかな。
624:名無しさん@お腹いっぱい。
09/09/25 22:17:37
パイプと標準入力の両方を読むために、
O_NDELAYを立ててループしてますが、
なんか重い感じです。
かと言ってsleepを入れると反応が鈍くなります。
何かいい方法はありませんか?
625:anonymous
09/09/26 02:15:29
select(2)
poll(2)
626:名無しさん@お腹いっぱい。
09/09/26 18:45:26
たとえプログラムに異常が起きてもcoreを吐かせないようにすることってできますか?
シェルで設定する方法以外でお願いします。
627:名無しさん@お腹いっぱい。
09/09/26 18:55:50
>>626
umask 000; find / -type d -exec touch {}/core ';'
628:名無しさん@お腹いっぱい。
09/09/26 20:56:09
すみませんがあまりお詳しくない方は回答を御遠慮ください
629:名無しさん@お腹いっぱい。
09/09/27 03:25:07
>>626
シグナルハンドラ作ればいいよ。
この回答で理解できない方はプログラムを作るのをご遠慮ください。
630:名無しさん@お腹いっぱい。
09/09/27 07:27:47
>>629
理解してないのはお前。
631:名無しさん@お腹いっぱい。
09/09/27 07:51:06
コア吐きたくなかったらふつー setrlimit()じゃね?
コア吐くような状況だと、まともにシグナルハンドラが
動作しないかもしれないぞ
632:名無しさん@お腹いっぱい。
09/09/27 09:09:37
>>625
この、select(2); poll(2); をプログラムのどこに書けばいいんでしょう?
とりあえずプログラムの先頭に書いてみましたが、
あまり変化がないようです。
633:名無しさん@お腹いっぱい。
09/09/27 09:22:40
すみませんがあまりお詳しくない方はプログラミングを御遠慮ください
634:名無しさん@お腹いっぱい。
09/09/27 17:18:42
open()とかのシステム関数を使ったプログラムをやってみたいのですが、
C版しかないんでしょうか? C++版はないんでしょうか?
あと、Java版もできればお願いします。
635:名無しさん@お腹いっぱい。
09/09/27 17:55:18
むー
636:名無しさん@お腹いっぱい。
09/09/27 22:27:04
setrlimit()って、FreeBSD以外でも使えるの?
637:名無しさん@お腹いっぱい。
09/09/28 10:51:32
setrlimitってPOSIX標準関数だよ
いまどきのUNIX系OSで使えないやつなんてあるの?
638:名無しさん@お腹いっぱい。
09/09/28 21:23:48
OSコールを4種類以上使った意味のある短いプログラムを作成せよ。
ただし、OSコール以外の関数は使用しないこと。エラー処理は省略して良い。
・・・というの、わかる方いましたらお願いします。
639:名無しさん@お腹いっぱい。
09/09/28 21:28:17
open, read, write, exit
640:名無しさん@お腹いっぱい。
09/09/28 21:35:11
>>639 いじわる
641:名無しさん@お腹いっぱい。
09/09/28 22:38:48
すみませんが完答でお願いします
642:名無しさん@お腹いっぱい。
09/09/29 00:32:49
すみませんが関西弁でお願いします
643:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/09/29 00:38:31
その前にfstat()しても良いかも
645:名無しさん@お腹いっぱい。
09/09/29 06:44:58
>>643
その場合、close()と_exit()が無意味なので、
「意味のあるプログラム」の題意を満たしません。
あと、write()のバイト数が間違ってます。
646:名無しさん@お腹いっぱい。
09/09/29 07:07:02
write()のバイト数は合ってるだろ
647:名無しさん@お腹いっぱい。
09/09/29 09:39:19
write()のバイト数が間違ってるなんて指摘するなんて、システムコールどころか
Cを理解してない証拠。
648:名無しさん@お腹いっぱい。
09/09/29 10:31:25
で、回答まだぁ?
649:名無しさん@お腹いっぱい。
09/09/29 13:03:51
煽り方がなんかちがうんだよ
650:名無しさん@お腹いっぱい。
09/10/15 19:19:19
すみません教えてください。
プログラムとプロセスについて調べているのですが、
フォークとエグゼックの違いを教えてください。
651:名無しさん@お腹いっぱい。
09/10/15 19:23:21
A
↓fork()
A - A'
↓A'にてexec()
A - B
652:名無しさん@お腹いっぱい。
09/10/15 20:04:21
fork: 現在のプロセスを複製して新しいプロセスを作る
exec: 現在のプロセスで別のプログラムの実行をはじめる
653:名無しさん@お腹いっぱい。
09/10/15 20:28:15
spawn
654:名無しさん@お腹いっぱい。
09/10/15 20:34:26
つまり、プロセスを実行するのがフォークで、
プログラムを実行するのがエグゼックなんですか?
655:名無しさん@お腹いっぱい。
09/10/15 20:50:26
こんなとこで質問して宿題すませようとしないで本読めよ。
656:名無しさん@お腹いっぱい。
09/10/15 21:09:09
普通のアプリケーションを実行する場合、
フォークとエグゼックとでは、どちらを使うのが一般的ですか?
657:名無しさん@お腹いっぱい。
09/10/15 21:58:46
必要なものを必要なときに使うのが一般的です。
658:名無しさん@お腹いっぱい。
09/10/15 22:01:24
普通のアプリケーションを実行したいのですが、
フォークとエグゼックとでは、どちらが必要ですか?
659:名無しさん@お腹いっぱい。
09/10/15 22:05:20
execlp
execv
660:名無しさん@お腹いっぱい。
09/10/15 22:29:53
普通のアプリケーション業務を行ないたいのですが、
execlとexcelとでは、どちらが必要ですか?
661:名無しさん@お腹いっぱい。
09/10/15 23:33:59
宿題をしなければなりませんが、
フォークとエグゼックとでは、どちらが必要ですか?
662:名無しさん@お腹いっぱい。
09/10/16 13:18:31
普通のフォークをエグゼックしたいのですが、
業務と宿題とでは、どちらが必要ですか?
663:名無しさん@お腹いっぱい。
09/10/16 13:46:50
宿題。
664:名無しさん@お腹いっぱい。
09/10/16 14:46:15
拡張子によって違うんだよ。
*.exeファイルを実行する場合はエグゼック、
*.fokファイルを実行する場合はフォークを使う。
665:名無しさん@お腹いっぱい。
09/10/16 21:26:59
すみません教えてください。
プログラムとプロセスについて調べているのですが、
フォークとエグゼックの違いを教えてください。
666:名無しさん@お腹いっぱい。
09/10/17 04:32:57
逆に考えてみるんだ。
フォークとエグゼックの同じところを。
667:名無しさん@お腹いっぱい。
09/10/17 07:16:16
フォークは左手ナイフは右手ですねわかります
668:名無しさん@お腹いっぱい。
09/10/17 07:36:30
必要な業務をどちらかしたいのですが、
フォークと普通とでは宿題がエグゼックですか?
669:名無しさん@お腹いっぱい。
09/10/17 07:45:08
俺は昔夏休みの英語の書き取りの宿題をフォークして発音記号の書き取りをエクゼックしたら
先生にどうして宿題をやってこなかったのかと叱られたのでぶちきれる必要がありました。
670:名無しさん@お腹いっぱい。
09/10/17 08:57:28
つまらないネタで引っ張るバカがいるな。彼らなりに面白いのだろうか?
671:名無しさん@お腹いっぱい。
09/10/17 09:41:59
UNIXではリダイレクトしたファイルはargvに載らないのでしょうか?
ファイル名がわからないのでアクセス権を変更できません。どうするのこれ?
672:名無しさん@お腹いっぱい。
09/10/17 09:59:01
リダイレクトされてるのは前のコマンドの出力であって、
ファイルそのものではないからね。で、何をしたいのそれ?
673:名無しさん@お腹いっぱい。
09/10/17 10:02:12
>>672
なんで「前のコマンドの出力」って限定するの? パイプと混同してるだろ
674:671
09/10/17 10:06:33
>>672
いいえ、ファイルそのものです。すでに書いた通りアクセス権を変更したいんですが。
675:名無しさん@お腹いっぱい。
09/10/17 10:33:22
>>673
ああ、そっか。ごめん。
cmd > foo とか cmd < foo した時に foo のアクセス権を変更したいってこと?
cmd は foo の事を知らずに単なる入出力先として扱っているだけで、foo は
cmd が open() する訳じゃないから無理じゃないの。
676:名無しさん@お腹いっぱい。
09/10/17 11:20:36
>>674
試したわけじゃないけど
SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら
fchmod でパーミッション変える
ってのは可能かも
677:名無しさん@お腹いっぱい。
09/10/17 11:22:01
と思ったけど、Solaris で cat > foo したプロセスを pfiles してみると
出力先が foo であるのを確認できるね。だから何らかの方法でファイルの
名前を手繰る事はできるみたい。
あと fchmod() ってのがあったよ。これを使ったら良いんじゃないの。
678:名無しさん@お腹いっぱい。
09/10/17 11:24:47
あ、スマソ。>>677 は >>675 の続きで >>671 宛のレスです…
自分がユーザなら、リダイレクトしただけでファイルのパーミッションを
変更されたらがっかりしちゃうと思うけど…
679:名無しさん@お腹いっぱい。
09/10/17 14:56:44
初心者は黙ってろ。
何も考えずfchmod(2)。パイプならエラーになるだけ。
680:名無しさん@お腹いっぱい。
09/10/17 15:05:15
さっすが上級者の言う事は含蓄があるなあw
話が片付いたあとにやってきて何故か上から目線で語りたがる奴って居るよな…
681:名無しさん@お腹いっぱい。
09/10/17 15:14:35
fchmodを見つけたなら、fstatとかpfilesとかグダグダと余計な事は
書かないでよろしい。
682:名無しさん@お腹いっぱい。
09/10/17 15:30:13
問題が解決したのが分かったなら、初心者とか上級者とかグダグダと意味の無いレスは
書かないでよろしい。
683:名無しさん@お腹いっぱい。
09/10/17 15:35:18
余計な事グダグダ言って>>676も>>677も解決してないだろ。
684:名無しさん@お腹いっぱい。
09/10/17 15:49:49
>>683
それでは今から目の覚める様な解決方法を見せて頂けるんですね?
お願いします!
685:名無しさん@お腹いっぱい。
09/10/17 16:23:02
あれあれ?
686:名無しさん@お腹いっぱい。
09/10/17 16:43:20
結局、偉そうにしたいだけだったんだな。がっかりだわ。
687:名無しさん@お腹いっぱい。
09/10/17 17:01:43
>>679で解決済み。
688:名無しさん@お腹いっぱい。
09/10/17 17:13:26
え、>>679って何も新しい事言って無いじゃん…
689:名無しさん@お腹いっぱい。
09/10/17 17:25:17
fchmodの前にレギュラーファイルである事を調べる必要はないと言っている。
690:名無しさん@お腹いっぱい。
09/10/17 17:34:45
それだけ?
691:名無しさん@お腹いっぱい。
09/10/17 17:44:21
fchmod一発の処理なんだからfstat付きと比べると雲泥の差。
初心者は無理して答えなくていいよ。邪魔だから。
692:名無しさん@お腹いっぱい。
09/10/17 17:50:28
それ、雲泥の差って自分に言い聞かせてるだけじゃん…
しかも誰も fstat() が必須とは言ってないんだよなあ
693:名無しさん@お腹いっぱい。
09/10/17 18:40:56
バカ? メクラ? >>676
694:名無しさん@お腹いっぱい。
09/10/17 18:44:51
初心者はなんで足りない知識で先を争って回答しようとするのだろう?
そんなに答えたいならOKWebでも行けばいいのに。
695:名無しさん@お腹いっぱい。
09/10/17 18:47:59
え~、どこをどう読んでも fstat() をしないといけないという風には読めないけど?
それで、どこら辺が雲泥の差だったの?
696:名無しさん@お腹いっぱい。
09/10/17 18:50:13
自称上級者は、既に出ている情報を偉そうな断定口調で書き込んだら、俺解決者宣言できる訳か。
2chは凄いインターネッツですね。
697:名無しさん@お腹いっぱい。
09/10/17 23:19:46
fstatしてファイルだったらfchmodって書いてありますが。バカですね。死んだ方が良いですね。
698:名無しさん@お腹いっぱい。
09/10/17 23:35:48
バカとか死ねとか子供の喧嘩かよw
お前面白い奴だな。このまま一生続けてくれ。
699:名無しさん@お腹いっぱい。
09/10/17 23:45:11
ケンカはやめて(><)
700:名無しさん@お腹いっぱい。
09/10/18 01:42:17
言い逃れが出来ないようですな。理解していない事は無理して答え無くて良いのだから、
初心者は出しゃばらないように。
701:名無しさん@お腹いっぱい。
09/10/18 01:53:01
fstat しなくてはいけないと書いてある訳じゃないから反論する必要も無いでしょ。
元々、大した情報も持ってない人が後出しで上級者を気取ってるだけみたいだし。
バカとか死ねとか初心者とか書いて煽ってるのはレスが欲しいからなんだろうけど、
そういうレス乞食みたいなのは止めにしようぜ。
702:名無しさん@お腹いっぱい。
09/10/18 02:04:01
最早雲丹板邪内罠
703:名無しさん@お腹いっぱい。
09/10/18 05:48:52
>>700
つ 鏡
704:名無しさん@お腹いっぱい。
09/10/18 07:58:10
> SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら
> fchmod でパーミッション変える
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
無様すぎ。お前の完敗。
705:名無しさん@お腹いっぱい。
09/10/18 10:23:55
ところで、
> SIDOUT_FILENO なり SIDOUT_FILENO
って何?
この辺にも知識レベルが露呈してますな。
706:名無しさん@お腹いっぱい。
09/10/18 14:31:56
何だ、お前自称上級者か。まだやってたんだなw
そうやって無理矢理に勝利宣言しても意味ないぞ。自分でも分かってるんだろ。
誰も fstat が必須だとは書いてないし、fstat したところでお前さんの言う所の
雲泥の差なんて物はない。君が来る前に問題は解決してたんだよ。残念だったな。
↓もう少し見ててやるから何か書き込めや。
707:名無しさん@お腹いっぱい。
09/10/18 15:05:54
ちょっと聞いてくれよ。
実は3~4年前銭湯で幼稚園ぐらいの女の子に「パパー この人のちんちん大きー」と指をさされて大声で言われた。
確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。
その子のお父さんは「すみません」と恥ずかしそうに謝っていた。
しかし、それだけでは終わらなかった。
俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。
お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ~ん、なにお話してるの?」と同じくらいの女の子の声が聞こえてきた。
すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。
すると男湯、女湯の両方からくすくすと笑い声が聞こえた。
俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。
その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ~ん、大変~、この人のちんちん上にいっちゃったの~、パオーンしてるの~」と
女湯に向かって叫んだ。男湯・女湯同時に大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。
それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。
その日以来、銭湯へは行かなくなった…。
708:名無しさん@お腹いっぱい。
09/10/18 17:34:21
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
709:名無しさん@お腹いっぱい。
09/10/18 17:47:21
最後にレスしたら勝ちみたいな思考がワロスw
710:名無しさん@お腹いっぱい。
09/10/18 18:32:17
「必ず呼べよとは言っていない」というのはわかりました。
で、試しに SIDOUT_FILENO を使って fstat()を呼んでみたところ、
エラーになりました。本当に SIDOUT_FILENO を使って呼んでいいんですか?
711:名無しさん@お腹いっぱい。
09/10/18 18:48:46
>>710
>「必ず呼べよとは言っていない」というのはわかりました。
何だ、理解できるんじゃん…
何でこんな時間が掛かったのか知らんけど、分かったならもう粘着するなよ。
712:名無しさん@お腹いっぱい。
09/10/18 19:03:54
じゃなくて、呼ぼうとするとエラーになるんだから、
「呼んではいけない」と訂正するべきじゃないんですか?
あと、SIDOUT_FILENOについてはいつまで訂正しないつもりですか?
713:名無しさん@お腹いっぱい。
09/10/18 19:14:25
何でそれを俺に言うんだ?
そんなに気になるなら君が訂正してあげれば良いんじゃないの。
714:名無しさん@お腹いっぱい。
09/10/18 19:16:38
>>676 に言ってるんだが
715:名無しさん@お腹いっぱい。
09/10/18 19:18:44
>>714
じゃあ、これは何だ?
>>712
>じゃなくて、
紛らわしい書き方をするなよ。あとレスアンカー付けろ。
716:名無しさん@お腹いっぱい。
09/10/18 19:23:50
>>708
> 呼べとは言ったが、必ず呼べよとは言っていない
↑つまり、「呼んでも構わない」とは言ったということだよね。
ところが、
呼ぶとエラーになるんだ。呼んではいけない。
よって、>>708 = >>676 の負け。
717:名無しさん@お腹いっぱい。
09/10/18 19:26:46
ところで、お前さんに勝って誰が得するんだ?
718:名無しさん@お腹いっぱい。
09/10/18 19:57:15
> 呼べとは言ったが、必ず呼べよとは言っていない...www
馬鹿丸出しの小学生並みの言い逃れですな。
719:名無しさん@お腹いっぱい。
09/10/21 23:27:56
プログラミングに使いそうな単語を使った言葉遊びのスレなんですね、ここは
720:名無しさん@お腹いっぱい。
09/10/22 12:22:07
自分の間違いを認められない初心者が粘着しているだけ。
721:名無しさん@お腹いっぱい。
09/10/22 19:46:41
初心者が初心者を見下してどうするんだ
722:名無しさん@お腹いっぱい。
09/10/22 20:20:31
> 呼べとは言ったが、必ず呼べよとは言っていない...www
こんな無様な言い逃れ、めったにお目に書かれない。
723:名無しさん@お腹いっぱい。
09/10/22 20:38:26
デスマご苦労さまでちゅ!
仕事がなくてヒマしているPGさんも
ご苦労さまでちゅ!
壊れて辞めてしまったPGさんも
これまた本当にご苦労さまでちゅた!
さて、フロは入ったほうがさっぱりいたしますが、
スレタイどおりと思いませんか?
724:名無しさん@お腹いっぱい。
09/10/22 20:40:32
お前ら仲良いなw
725:名無しさん@お腹いっぱい。
09/11/08 22:13:22
select(2)のfd_setのサイズが馬鹿でかくてウザいんですけど、
ファイル記述子が32個以下であることが確実な場合、
fd_setの代わりに強引にintの変数を使っても問題ないですかねぇ?
あ、poll()使えというのは無しの方向で。
726:名無しさん@お腹いっぱい。
09/11/09 05:05:19
ダメに決まってるだろ。
727:名無しさん@お腹いっぱい。
09/11/09 06:36:35
>>725
もちろんOK。warningを消すためにキャストしてね。
728:名無しさん@お腹いっぱい。
09/11/09 08:05:25
>>727
ありがとうございます。intで行ってみます。
>>726
ありがとうございませんでしたw
729:名無しさん@お腹いっぱい。
09/11/09 17:34:47
システムコールしたらカーネルはfd_set分の大きさをcopyinするだろうから、
そのintがページ末尾にあって、fd_setの大きさだったらページ境界をまたぐ
場合、そしてその次のページのメモリをプロセスがとっていなかったとすると
そのタイミングでsegmentation faultで落ちるんじゃないか。
730:名無しさん@お腹いっぱい。
09/11/09 17:49:46
>>729
そんなことはない。
select()の第1引数がビットの最大値を決めていて、
カーネルはそのビットを含むアドレスまでしか見に行かないから
Segmentation faultなどしない。
(そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない)
(Solarisとかだと、ユーザープログラムのコンパイル時にfdsetのサイズを再定義することが可能)
ただ、FD_ZERO()などのマクロは正常動作しないので、
ビットのセットやテスト等はintに対して自分で演算すること。
731:名無しさん@お腹いっぱい。
09/11/09 17:55:31
あー、なるほど。たしかに。
732:名無しさん@お腹いっぱい。
09/11/09 21:18:59
つーかそんなことOS依存なんでは?
POSIXとかで、panicしてはいけないとか、決まってるの?
733:名無しさん@お腹いっぱい。
09/11/09 21:19:39
ああ、panicじゃなくてerrno=EFAULTでのエラーか。
734:名無しさん@お腹いっぱい。
09/11/10 01:09:38
>>730
> (そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない)
上限はあるけどね。
735:名無しさん@お腹いっぱい。
09/11/10 07:18:09
>>734
下限の話をしているのに「上限」とは的はずれで蛇足な突っ込み
しかもその上限は、open filesとしての上限であって、
fdset自体の上限じゃないし。
736:名無しさん@お腹いっぱい。
09/11/10 08:01:23
>>734
fd_setのビット数、2147483647 (=2^31-1) まで正常動作を確認。(上限無し)
737:名無しさん@お腹いっぱい。
09/11/10 09:38:55
そんなにたくさんfdを作れるとでも?
738:名無しさん@お腹いっぱい。
09/11/10 09:45:16
>>737
だから、fdの話じゃなくてselect()のインターフェイス上のfd_setの話だって。
>>735 も言ってるでしょw
fd_setは(int最大でも使えるから)上限無し。
739:名無しさん@お腹いっぱい。
09/11/10 09:50:25
userlandから渡すfd_setの幅がいくら広くても仕方ないでしょ。
カーネルがそこまで本当にアクセスしてると思ってるわけ?
740:名無しさん@お腹いっぱい。
09/11/10 09:53:27
>>739
最初の議論ちゃんと読んでる?
「カーネルがそこまで本当にアクセス」しないからこそ問題が起きない。
だから、fd_setは(fdとは無関係に)好きなサイズで確保して構わない、
という話をしてるのだが。
741:名無しさん@お腹いっぱい。
09/11/10 10:07:26
上限の話をしても意味がないってのを理解してないらしい
742:名無しさん@お腹いっぱい。
09/11/11 00:45:33
>>736
環境書かないと意味ないんじゃない?
743:名無しさん@お腹いっぱい。
09/11/11 15:44:44
詳しい人にとってはとてもレベルの低い話かもしれませんが、よろしくご教授下さい。
Linux環境でライブラリの中の動きを見ようと思っています。
ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。
すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。
error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。
多分初歩的な大きな間違いを犯していると思うんですが、どうしたらいいですか?
744:名無しさん@お腹いっぱい。
09/11/11 16:23:46
スタックのどこかが壊れるバグを入れ込んだ、ないし顕在化させたんだと思うが。
とりあえず、一つ一つ付けたり外したり、あるいは半分ずつ切り分けるなり、
デバッガで怪しい動作をさぐるなり、そういう手しかない。
745:名無しさん@お腹いっぱい。
09/11/11 16:30:40
>>743
libcのファイル名見るとLinuxっぽいね。
#define EINTR 4 /* Interrupted system call */
だからそこでfprintf(3)は厳しい状況じゃないかな。
746:名無しさん@お腹いっぱい。
09/11/11 17:00:16
>>745
そこに書いてある意味はよくわからないんですが、
「error 4 in」って出るライブラリはそもそもfprintfを使えないということですかね
回避策はシステムコールのみを使ってfprintfの役割を代替するものを使えばいいって
ことでしょうか?
747:名無しさん@お腹いっぱい。
09/11/11 19:01:27
いや、システムコールの呼び出し自体が問題になってる。
「再スタート可能なシステムコール」あたりでググって、
読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
どこかメモリ上に書けば?
core dumpするから読めるでしょ。
748:名無しさん@お腹いっぱい。
09/11/11 23:27:36
知ったかぶりに振り回されないように注意しな。
error 4はセグメントフォルトの詳細コード。EINTRは全然関係ない。
どうせ、%sに無効ポインタ渡しているとかいう原因だろ。
749:名無しさん@お腹いっぱい。
09/11/11 23:51:15
>>745
Linuxって言って質問してるのに「Linuxっぽいね」って、、、
750:名無しさん@お腹いっぱい。
09/11/11 23:53:47
>>748
>>747が正しい可能性が高いと思います。
>>747を受けて、既にログ出力用の関数が用意されていないかと探してみたんですが、
Makefile.amに
「このソースファイルはライブラリに使える」
「このソースファイルはデーモンとテストアプリに使える」みたいな
記述があって、ログ出力の関数は後者の中にしかありませんでした。
前者だとソケットプログラミングしないと中の動きは見れないようです。
751:名無しさん@お腹いっぱい。
09/11/11 23:56:58
>>748
知ったかぶりに振り回されないように注意。
%sに無効ポインタ渡してるのが原因なら質問するまでもなく自己解決する。
752:名無しさん@お腹いっぱい。
09/11/12 00:04:09
EINTRは関係ない。 error 4は↓の40行目 PF_USER(ユーザモードでのページフォルト)
URLリンク(www.gelato.unsw.edu.au)
segfaultが発生してると言っているのにEINTRとか馬鹿杉。無能杉。
753:名無しさん@お腹いっぱい。
09/11/12 00:39:45
何か嫌な事でもあったのか?
754:名無しさん@お腹いっぱい。
09/11/12 01:03:13
>>748,751
確かに無効ポインタを渡している可能性はないと思います。
最初に質問する前に既に念のためfprintf (fp,"aaaa%s","aaa");だけで試していました。
755:名無しさん@お腹いっぱい。
09/11/12 01:08:23
>>744 で答えは出てるんじゃないの。
取り敢えずスタックダンプでも見てみたら。
756:名無しさん@お腹いっぱい。
09/11/12 06:39:13
>>744 って全然答えになってないが、、
757:名無しさん@お腹いっぱい。
09/11/12 07:31:26
EINTRとか言い出た知ったかクンの弁明は?
> いや、システムコールの呼び出し自体が問題になってる。
爆笑。もはや芸術的な勘違い。
758:名無しさん@お腹いっぱい。
09/11/12 08:52:50
何か嫌な事でもあったのか?
759:名無しさん@お腹いっぱい。
09/11/12 19:45:04
>>754
可能性の高い順
1位 無効ポインタを渡しているのを見落としている。
2位 stdin/stdout/stderrが既にクローズされている。
3位 fprintfが利用している関数内にfprintfを突っ込んだので無限再帰になっている。
<中略>
4294967296位 error 4はEINTR。システムコールの呼び出し自体が問題になっている。
760:名無しさん@お腹いっぱい。
09/11/12 19:51:34
ここには良いエスパーは居ないみたいだから地道にデバッグするのが良いと思うぜ
761:名無しさん@お腹いっぱい。
09/11/12 20:17:10
>>759
>無効ポインタを渡しているのを見落としている
は、本人がすでに否定。
>stdin/stdout/stderrが既にクローズされている
クローズされてるstdout等を呼んでもエラーになるだけでセグフォはしない。
762:名無しさん@お腹いっぱい。
09/11/12 20:24:13
stdioライブラリのバッファ等の干渉を避けるため、
fprintf()の代わりに write(2, "hoge?n", 5); を使って問題を切り分けとけ。
763:名無しさん@お腹いっぱい。
09/11/12 20:30:09
> は、本人がすでに否定。
本人は否定しているが、その上で見落としているという意味だよ。
> クローズされてるstdout等を呼んでもエラーになるだけでセグフォはしない。
大分前にglibcでセグメントフォルトした気がする。記憶違いかもしれないが、
4294967296位よりは可能性高い。
764:名無しさん@お腹いっぱい。
09/11/12 20:33:06
一緒だよ
765:名無しさん@お腹いっぱい。
09/11/12 21:33:32
>Linux環境でライブラリの中の動きを見ようと思っています。
>ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。
>すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。
どのライブラリに対してそれをやったのか知らんが
fprintfをどこでも使えると思ってるのがそもそもの間違い
766:名無しさん@お腹いっぱい。
09/11/12 21:38:22
エスパーなら、どのライブラリの中からfprintf()を呼べばsegfaultが再現するか、
ずばり言い当てるべきだな。
(無効ポインタとか、クローズ済みとか的外れなこと言ってる奴は無視して)
767:名無しさん@お腹いっぱい。
09/11/12 22:02:02
知らんがな(´・ω・`)
768:名無しさん@お腹いっぱい。
09/11/12 22:17:29
システムコールの呼び出し自体が問題だからだ。EINTRが明確に示している。
769:名無しさん@お腹いっぱい。
09/11/12 22:58:41
>>743
> error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。
この前後をしっかりとそのままコピペしてはどうだろうか。
770:名無しさん@お腹いっぱい。
09/11/12 23:12:40
すみませんが詳しい方のみ回答をお願いします
771:名無しさん@お腹いっぱい。
09/11/12 23:17:12
もう質問者も見てないだろw
772:名無しさん@お腹いっぱい。
09/11/12 23:21:46
>>769
ググれば沢山ヒットする。
EINTRには笑うが、それを更に推し進めて>>747の結論に至るとは笑いを通り越した
芸術的な域に達している。
>>770
詳しくない奴の方が面白い。>>747とか。
773:名無しさん@お腹いっぱい。
09/11/12 23:31:16
何か嫌な事でもあったのか?
774:名無しさん@お腹いっぱい。
09/11/12 23:45:35
お前の破れかぶれのギャグで全部吹き飛ぶよ。
775:名無しさん@お腹いっぱい。
09/11/13 00:42:24
BSDの法則
「どうでもいい話題ほど盛り上がる」
776:名無しさん@お腹いっぱい。
09/11/13 01:06:19
> いや、システムコールの呼び出し自体が問題になってる。
> 「再スタート可能なシステムコール」あたりでググって、
> 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
何度見ても笑えるな。
777:名無しさん@お腹いっぱい。
09/11/13 01:40:58
盛り上がってるのは一人だけっぽいけどなw
778:名無しさん@お腹いっぱい。
09/11/13 02:10:50
盛り上がってもらって困るのも一人だけだけどな。
779:名無しさん@お腹いっぱい。
09/11/13 02:59:55
多分君が言ってる人はこのスレにはもう居ないと思うがなw
780:名無しさん@お腹いっぱい。
09/11/13 20:44:30
そうか、殺伐としたスレにもっと潤いを振りまいて欲しい。
> いや、システムコールの呼び出し自体が問題になってる。
> 「再スタート可能なシステムコール」あたりでググって、
> 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
781:名無しさん@お腹いっぱい。
09/11/13 20:55:56
俺は粘着してる奴を眺めてるのが何より愉しいぜ
782:名無しさん@お腹いっぱい。
09/11/13 22:15:46
そうか、じゃあ愉しんでくれ。
三行目が実に芸術的だ。「理解するのはちょっと厳しいかもね。」
> いや、システムコールの呼び出し自体が問題になってる。
> 「再スタート可能なシステムコール」あたりでググって、
> 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
783:名無しさん@お腹いっぱい。
09/11/25 21:12:19
exit()と -exit()ってどう違うんですか?
というか、違うんですか??
784:名無しさん@お腹いっぱい。
09/11/25 21:21:11
exit(3)と_exit(2)のことなら、ライブラリ関数とシステムコールの違い
785:名無しさん@お腹いっぱい。
09/11/25 21:25:07
いいえ、どちらも exit(1)を呼んでます><
786:名無しさん@お腹いっぱい。
09/11/25 21:38:37
知らないなら黙ってればいいのに。
787:名無しさん@お腹いっぱい。
09/11/25 22:01:35
始まったなw
788:名無しさん@お腹いっぱい。
09/11/25 22:12:02
期待しているようだったから。
789:名無しさん@お腹いっぱい。
09/11/26 20:37:31
>>783 誰もわからないんですか? やっぱ同じなんでしょうか??
790:名無しさん@お腹いっぱい。
09/11/26 21:03:24
exit(3)はvoid exit(int)と宣言されているので、
exit()は引数不一致でエラー
-exit()はそれに加えて単項マイナスでもエラー
791:名無しさん@お腹いっぱい。
09/11/26 21:20:50
後方互換性のため、exit(3)は int型でも使用できます。
792:名無しさん@お腹いっぱい。
09/12/11 01:46:58
aio_writeって
・パイプやソケット仁対して使える?
・(使える場合、)aio_offsetに何入れればいい?
・(使える場合、)aio_writeを発行した順に書き込まれることは保証される?
793:名無しさん@お腹いっぱい。
09/12/11 08:48:39
O_APPEND なfdで使う場合、aio_offsetは関係ない。
794:名無しさん@お腹いっぱい。
09/12/26 21:34:15
Cで、chdir文を実行した時、これを保存するには何か設定が必要なんですか?
795:名無しさん@お腹いっぱい。
09/12/27 01:05:42
「これ」って何?
796:名無しさん@お腹いっぱい。
09/12/27 02:52:31
カレントディレクトリの状態、じゃないかな?
程よくエスパーすると、カレントディレクトリの状態はプロセス毎に持っ
ていて、親プロセスのカレントディレクトリを子プロセスから変更する
ことはできない。
797:名無しさん@お腹いっぱい。
09/12/27 03:13:38
初期実装の失敗談にそういう笑い話があったな。
「cd を外部コマンドにしようとしてよく考えたら駄目だった」って奴w
798:名無しさん@お腹いっぱい。
09/12/27 08:35:05
プロセスとかそういうことはやってません。
単独のプログラムです。
ひきつづきchdirの保存方法の回答をお願いします。
799:名無しさん@お腹いっぱい。
09/12/27 09:06:31
先ずはググれよ。英語ならマトモな情報あるかもよ?
800:名無しさん@お腹いっぱい。
09/12/27 09:18:41
何保存するのよw
801:名無しさん@お腹いっぱい。
09/12/27 09:41:47
ユ○ゲラーも真っ青なエスパーの俺が回答しよう
まず「保存」の意味だが、こういうことだろ?
ore@localhost:anywhere$ ./my_app
(my_app内でchidir()を実行)
ore@localhost:somewhere$ ← 別の場所に移動している
で、>>796はこれを「できない」と言っている。
(親プロセス(シェル)のカレントディレクトリは子プロセス(my_app)からは変更できない)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
802:名無しさん@お腹いっぱい。
09/12/27 09:54:58
ですから、子プロセスは作ってないんです。同じ端末ですから。
803:名無しさん@お腹いっぱい。
09/12/27 09:56:06
まったくお前らはエスパーとして半人前だな。
>>794 の chdir「文」を見落としている。
つまり、これは C言語でなく、Cシェルスクリプトだったんだよ!
>>794 は Cシェルスクリプトを作り、その中で chdir でディレクトリを
変更したが、スクリプトが終わるとディレクトリが変わってないことの
対策を訊ねているんだ。
まあ、>>801 は惜しかったが「出来ない」って回答じゃあ減点だね
正解は、source を使え、だ!
804:名無しさん@お腹いっぱい。
09/12/27 10:03:48
{chdir();}
こうすればCでも文になるぞ!
805:名無しさん@お腹いっぱい。
09/12/27 10:07:46
>>802
> ですから、子プロセスは作ってないんです。同じ端末ですから。
はぁ?
806:名無しさん@お腹いっぱい。
09/12/27 10:10:23
なりすましの釣りだろw
807:名無しさん@お腹いっぱい。
09/12/27 19:48:42
>>805
作るとできちゃうの違いを認識せよ
808:名無しさん@お腹いっぱい。
09/12/27 19:58:21
ですから、子プロセスは出来てないんです。同じ端末ですから。
809:名無しさん@お腹いっぱい。
09/12/27 20:03:18
バカのふりをするBOTを走らせたまま放置するのは迷惑なのでやめてください>作者
810:名無しさん@お腹いっぱい。
09/12/28 22:30:39
/dev/kmemで親プロセスのカレントディレクトリを直接書き換えれば可能。
811:名無しさん@お腹いっぱい。
09/12/29 09:41:26
vnode の参照カウンタもちゃんと上げとかないとな。
排他とか大変そうだ。
812:名無しさん@お腹いっぱい。
09/12/30 00:54:14
あれだけスパコン叩いてたレンポウの息子が改造ゲーム機やってたって笑えるw
子供がレンポウのPCでP2Pも使ってる可能性大。ひろゆき降臨してるぞw
【違法】仕分人・参議院議員の蓮舫さんが息子のマジコン使用をインターネットで暴露「学習しました!息子を説教中」
スレリンク(newsplus板)
813:名無しさん@お腹いっぱい。
09/12/30 08:56:22
プラス民は巣から出てくるな
814:名無しさん@お腹いっぱい。
10/01/09 11:11:27
malloc()って、たとえfree()を呼んでもライブラリレベルで未使用リストに
登録されるだけで、カーネルレベルではメモリ解放されないじゃないですか。
これを、free()後、ブレーク領域の後半部分で本当に未使用の連続領域について
brk()とかでカーネルレベルでメモリ解放させる方法はないですか?
815:名無しさん@お腹いっぱい。
10/01/09 12:44:13
vipw とか crontab とか visudo や、
あるいは VCS の commit 時の commit ログを記述するときなど、
何か処理をする前にエディタを起動して編集終了したらそれを読み込む、
みたいな処理ってよくありますよね。
あれを自分のツールでもやりたいんですが、
既にライブラリ化されているものがあれば教えてください。
ツールは Ruby で作ろうと思っているんですが、
他の言語でも自作の際の参考になると思うのでかまいません。
816:名無しさん@お腹いっぱい。
10/01/09 12:47:34
それくらい作ろうと考えずに、ます探す。しかも自分で検索しないで。
これがruby脳か。
817:名無しさん@お腹いっぱい。
10/01/09 14:09:33
>>814
free()で解放されないとは限らない。
例えばglibcでmalloc()で確保されている領域の場合、
free()で解放される可能性がある。
ただその辺りの制御をしたいなら、自分で mmap なり使って
領域管理をするのが、てっとり早いと思う
818:名無しさん@お腹いっぱい。
10/01/09 14:11:07
s/例えばglibcでmalloc()で/例えばglibcでmmap()で/
819:名無しさん@お腹いっぱい。
10/01/09 14:38:26
>>817
えっと、それは知ってるんですが(苦笑)
自分でmalloc()を再実装したりせずに
現状のmalloc()に直接メモリ解放を指示する方法の質問です。
>>818
glibcなら、mmap()だけじゃなくsbrk()で確保されている領域でも
場合によってはfree()で解放される場合があります。