Linuxプログラミング
..
496:login:Penguin
08/01/12 09:34:51 xcB/bLmK
>>495
Linux歴が浅いのでLinuxの作法を知らないのは当然だとして
それ以外の基礎知識や能力や言葉の使い方や文章の書き方は俺の数段上を行ってるなぁ
まぁ一緒にされたら迷惑だろうけど……。
最近稀に見る好印象な方だなぁと思った。
497:login:Penguin
08/01/12 10:36:04 QnvfkAhH
inotifyを
reiserfsで使ってみた。
間違ってイベントが無限に飛んでくる
バグとかあってプロセス10万
発生させてしまってマシン群止まっちまったw
reiserfs禁止にしたほうがいいぜ
498:login:Penguin
08/01/12 13:06:44 ZIVLcoIL
間違ったのがお前じゃないことを証明出来たら考える
499:login:Penguin
08/01/12 14:07:31 FBfOnT6z
>>495
pointed hair bossで検索するとちょっと幸せになれるかも
500:login:Penguin
08/01/12 14:17:16 QnvfkAhH
>>499
上司使えない云々より
pointed-haired bossをそんな風に書く奴が
このスレにいる方が恥ずかしい。もう来るなよw
501:login:Penguin
08/01/12 14:51:08 FBfOnT6z
>>472
siduxのインストール解説してるホームページでreiserfsを入れてたから
そのまま,まねして入れてしまった。
502:login:Penguin
08/01/12 20:37:07 6ANyg4lC
起動時の画面にペンギンは出てくるのに、起動メッセージが表示されないのはなぜ?
シリアルコンソールには起動メッセージが流れてるのに..
カーネルパラメータかデバイスファイルの設定が必要ですか?
503:login:Penguin
08/01/12 22:52:36 k/UIIV/1
>>502
どのメッセージのことか分からんが、
ディストリによってはそういうもんだろ
504:login:Penguin
08/01/13 03:13:19 0vRtfE6z
ちょっと質問を。「組み込みLinuxができる」って言える基準って何か皆さんありますか?
とあるデバイスにLinuxを載せてその上でアプリを走らせるという事をやったのですが、
結局はLinuxの一般的な機能(標準関数やらioctlやらopen("dev/xxx")やら)
を使ってアプリを作ったという具合で、どうも誰でもできるような表層的な事をやったような印象です。
これを組み込みLinuxと言うのは間違っている気がするのですが、
みなさんにとっては何をもって組み込みLinuxでしょう?
505:login:Penguin
08/01/13 03:20:31 YLI1I0ry
>>504
新しい CPU で gcc すら動かないプラットフォームなら gcc を移植する.
bootprom がなければ自前で移植/製作する.
いざとなったら仮想記憶とも戦う.
足りないドライバは自前で作る.
ユーザーランドは必要最低限な物だけ拾ってきて自分で構築する.
あたりかな.
506:login:Penguin
08/01/13 07:01:23 OSM5etr9
下ふたつはいいにしても、
>gcc を移植する
これはないだろうさすがに。
507:login:Penguin
08/01/13 07:09:47 Hm7xBcnO
最近だとCellか
508:login:Penguin
08/01/13 08:19:09 YLI1I0ry
>>505
あるよ. mips core に特殊な co-processor つけた奴とか,
特殊用途に特化した processor 用のやつとか, 今まで 3回
移植した.
509:login:Penguin
08/01/13 08:26:40 YLI1I0ry
アンカー間違えた >>506
もっとも, 専用組み込みOS用で Linux 用じゃなかったけどな...
開発は全部クロスプラットフォーム.
510:login:Penguin
08/01/13 10:53:17 ujlOgFWo
>>508
そこまでやれなくても組み込みLinuxできると言っていいだろ
511:login:Penguin
08/01/13 11:06:22 2uIpuPRh
そう得意になって言うことでもないな
512:login:Penguin
08/01/13 12:45:24 ZbSPxFY0
>新しい CPU で gcc すら動かないプラットフォームなら gcc を移植する.
>bootprom がなければ自前で移植/製作する.
>いざとなったら仮想記憶とも戦う.
そもそもこの3つはLinux全く関係なくないか?
組み込みであることは確かだが。
513:login:Penguin
08/01/13 13:11:47 ujlOgFWo
俺も今度Linux組み込みやろうと思うんだが、
普通のLinuxのドライバ開発 VS Linux組み込み
Linuxの組み込み VS 普通の組み込み
ってどう違うんだ?
組み込みじゃないLinuxのドライバは経験あるんだけど
514:login:Penguin
08/01/13 13:25:07 tHHnWE3z
>>505が必要だということを知ってればいいじゃないか。
あとはどうやればいいのか自分でしらべればOTJになるし。
515:login:Penguin
08/01/13 13:26:26 tHHnWE3z
すべった。OJTだ。
orz
516:login:Penguin
08/01/13 13:38:02 88CnHFva
組み込みで適当にソース拾ってきてfbconでつまずいてますorz
画面に文字を出すにはfbconを使うと見たのだが。。
アルマジロにしとけばよかったかなぁ あれならいきなり動きそうだし
517:login:Penguin
08/01/13 13:46:09 YLI1I0ry
>>512
> >いざとなったら仮想記憶とも戦う.
MMU とか TLB とか言われる部分のアーキテクチャに依存するので, Linux の
VM が target のアーキテクチャをカバーしきれていない場合必ず発生する.
つか, VM 使った OS なら何だってそう, NetBSD でも結構泣いた.
518:login:Penguin
08/01/13 14:10:42 88CnHFva
MMU辺りと戦うとなるとかなりのパッチになりそうですね
趣味人には荷が重いし、プロだと開発費が厳しそう。
519:login:Penguin
08/01/13 14:32:11 YLI1I0ry
>>518
patch の量は大したことないよ. target のアーキテクチャと
OS の VM アーキテクチャの整合をどうとるかって問題だけだから...
ただし, 双方のアーキテクチャを
***うまく噛み合わせる手法***
を考え付くまでにやたら時間がかかる.
520:login:Penguin
08/01/13 14:57:09 ujlOgFWo
その前にCPUとOSのVMを理解する時間が必要だ
521:login:Penguin
08/01/15 02:45:42 eLLje4gP
linuxでgccを使っています。
cを使ってます。
fork-execでお聞きします。
binは、何かのコマンドです。
if(fork()==0)
{
execl(bin,bin,"gg*.c",NULL);
}else
{
wait();
}
とする場合にexecでは
*がメタキャラとして認識されないようです。
メタキャラを有効にする方法ってありますか?
522:login:Penguin
08/01/15 03:25:29 JuJ/Jd3b
>>521
*の展開は/bin/shの機能だからね。execveで展開される筈もなく。
system(3)やpopen(3)を使うか、自分で*をglob(3)で展開するかしないとダメやね。
523:login:Penguin
08/01/16 01:30:06 R+P7htm7
マルチスレッドでシステムコール使うの禁止なんですよ。
スレッドセーフか、分からないよorz (man見ました)
524:login:Penguin
08/01/16 02:24:00 84amoxWV
>>523
システムコール禁止ってfork(2)もexecl(2)もシステムコールだと思うが
スレッドがどこに出てくるのか話が見えないんだが、
スレッドの中でfork(2)しようとしてるの?
それはまずいんでない
525:523
08/01/16 04:49:53 R+P7htm7
pthread_atforkと
fork-execの間に無駄な処理しない場合は、今の所OK
526:login:Penguin
08/01/16 07:52:05 XSPkVtkD
>>525
それ嘘だろ
527:login:Penguin
08/01/16 11:41:09 D4p47idN
あってるんじゃないの。
URLリンク(d.hatena.ne.jp)
ただ、
>マルチスレッドでシステムコール使うの禁止
というのは、何かまだ条件が足りていない気がする
528:login:Penguin
08/01/16 11:50:50 vAdXY+Zc
禁止じゃないのもある
529:login:Penguin
08/01/17 00:22:17 gFqea9nd
話割って入ってすまないが
iptablesのようにパケットフィルタを
したいのですが定義されるフィルタ情報が
1万もあります。
とてもじゃないけどまともに1つずつなめている
と終わらないので何か良い方法ないでしょうか?
530:login:Penguin
08/01/17 00:26:04 FBet0L5h
1000に分けて10回処理する
禅問答みたいだけど効果は補償できる、まじお薦め
でも1万ルールも追加しなくても、おそらくネットマスクを使うなりなんなり
方法ありそうな気がします。
531:login:Penguin
08/01/17 01:04:02 gFqea9nd
>>530
カーネル見ながら考えてみたけど
用は困りモノなのがサブネットマスクの値に
よる変動なので
struct mask_zone{
struct mask_zone *next;
struct mask_zone *not_null_next;
uint32_t mask;
};
とかリンクリストを用意、基本的にマスク長単位に分割
する方針ってどうかな?ハッシュも組み合わせる予定
これだけだと毎回33回舐めるからばからしいので
構造体にnot_null_nextっていうNULLじゃないリストへ
ポインタも入れて舐める回数を減らすっていうのはどうかな?
532:login:Penguin
08/01/17 02:13:06 7inzzgaQ
>>525
read(2),write(2),open(2)はマルチスレッドでも呼べると思うんだが。。。
というかシステムコール禁止したら、スレッドで何もできない。。
533:login:Penguin
08/01/17 07:02:23 IbgArDhc
何もできなくはないだろう。
「意味のあることは何もできない」というだけでw
534:login:Penguin
08/01/17 09:54:37 nrX5B3xa
man signal見た?
535:login:Penguin
08/01/17 13:45:36 zG6yMxAP
printfだって下位層でシステムコール呼ぶからな
536:login:Penguin
08/01/17 16:27:11 qlT5HX3f
弱い者たちが夕暮れ、さらに弱い者を叩くんだな。
537:login:Penguin
08/01/17 16:34:11 hGbWYs9C
その音が響き渡ればブルースは加速していくんだな。
538:login:Penguin
08/01/17 17:04:30 oO7ItHQ/
見えないGUIがほしい
539:login:Penguin
08/01/17 23:14:33 RgCsKsuT
見えないGNUを撃ちまくる
540:login:Penguin
08/01/18 05:14:41 12aBnOBC
/dev/shm/と/dev/ram0の違いがわからない
mount -t tmpfs tmpfs /mnt/ramdisk
しても/dev/shmとかは使わないんだな。
541:login:Penguin
08/01/18 22:10:28 ddex+v8t
>>540
俺も知らないが、ブロックデバイスとファイルシステムは違うんじゃない?
それとも、 shm_open(3) 読めばおわりか?
542:login:Penguin
08/01/20 09:17:18 GQI9e7dz
プログラム版の質問スレから誘導されてきました.
while ((c = fgetc(stdin)) != EOF) {
printf("[%d]: %c\n", num++, c);
}
とかやったらいつまでだってもfgetcから抜けれないのですが
stdinでEOFをキーボードから打ち込むにはどうしたらいいですか?
ちなみにLinuxのxterm上で動作させています.
543:login:Penguin
08/01/20 10:02:05 9Tl2aHlP
>>542
Ctrl+D
544:login:Penguin
08/01/20 16:58:04 QAkqHfcc
>>542
Linuxプログラミング固有の話じゃないんだが
誘導する奴はレベル低いな
545:login:Penguin
08/01/20 17:33:57 3cxUYgCe
同感
546:login:Penguin
08/01/20 19:32:41 60pqkMpi
かといってこんなのをプ板にのさばらせておくわけにもいかないからな
547:login:Penguin
08/01/20 19:43:59 m3nXxor1
プ板てw
548:login:Penguin
08/01/20 20:15:53 60pqkMpi
ムだム。間違えた。
549:login:Penguin
08/01/20 21:25:35 lhDKawjW
なんでムなん?
550:login:Penguin
08/01/20 22:03:02 O/GA+k/y
はるか昔、ムー族とマ族の争いがあって、千年続き、
それを嘆いた神がプ大陸を二つに分けたと伝えられる。
551:login:Penguin
08/01/21 01:51:38 EPN4E+gf
>>544
環境依存じゃないか?
UNIX なら stty(1) を見ろとなる。
で、プ^H^Hム板の質問スレなら Ctrl+Z or F6 な人もいるだろ。
552:login:Penguin
08/01/21 21:33:07 DS13UDOd
>>549
プログラ「マ」(について語る|がダベる)板、通称マ板と区別するため
553:login:Penguin
08/01/22 22:56:28 3SjBwwbG
pthreadtypes.hで定義されているpthread_attr_t構造体ですが、
2.6.9と2.6.18で見比べたところ全く違う内容になっています。
というかpthreadtypes.h自体に大幅な変更があったような。
いつのバージョンで変わったか分かる人いませんか?
554:login:Penguin
08/01/22 23:06:29 1aLYQ0Xu
struct sk_buffをそのままユーザ空間に
ひっぱりだしたいんだけど
どうすればいいのかなぁ
555:login:Penguin
08/01/22 23:11:26 Z7iV0h+U
>>553
ユーザアプリからは、構造体の中身を参照しちゃいかんのとちゃう?
556:553
08/01/23 00:20:47 rX2IdG6k
>>555
まじですか!?
そういうつくりになってたんすね。
pthread_attr_init()系の関数でアクセスですかね。
ありがとうございます。
557:login:Penguin
08/01/23 02:08:02 n7QxPJKv
すまんstatを使ってファイルサイズを調べたいんだけど
if (stat(FileSt, &sb) == 1)
{
(sb.st_size>0)
{
ifs_flg=1;
}
}
ファイルが存在するか?するならサイズは?みたいにしてます。
これを1行でstat(FileSt, &sb->st_size) >0
みたいに出来ませんか?
558:login:Penguin
08/01/23 02:08:50 n7QxPJKv
あ、ファイルは存在する前提です
559:login:Penguin
08/01/23 04:08:18 iwlYPuMF
statなんたらって自前の関数用意すれば
560:login:Penguin
08/01/23 11:43:41 G50LtKQp
>>557
単純にショートカットじゃダメ?
if ((stat(FileSt,&sb)==1) && (sb.st_size>0)) {
...
}
561:login:Penguin
08/01/24 01:44:45 XcZJxRmS
>>560
それやってたんですが、うまく行かない。
あ、括弧なしだったからかな?
括弧つけてみます
562:login:Penguin
08/01/24 09:06:49 +0KdBqsj
recvfromってタイムアウト設定はできないんですか?
データが届かなかったら永久に待ってそうです
UDPのプログラムで任意の時間返答が無かったら
さっさとrecvfromを抜けたいんですが...
563:login:Penguin
08/01/24 09:12:54 +a49+I+1
>>562
selectを使いたくないならSO_RCVTIMEO
564:login:Penguin
08/01/24 09:44:54 +0KdBqsj
>>663
int timeout = 5000
setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));
とやっても抜けられないです...やはりずっととまったままです
565:login:Penguin
08/01/24 09:51:20 +a49+I+1
struct timevalとintって?同じもの?だっけ?5000秒?待ったり?
566:login:Penguin
08/01/24 10:06:19 A5lAfTzI
>>565
struct timeval と int は別
567:login:Penguin
08/01/24 10:17:10 FNc6yZ5O
565 は知ってて書いているようにしか見えない。
>>564
ためしてないが、その setsockopt(2) は EINVAL になってたりしないか?
568:login:Penguin
08/01/24 10:20:13 +0KdBqsj
>>565-567
できました!
569:login:Penguin
08/01/24 10:27:34 +0KdBqsj
おかげさまでタイムアウトは無事できました
まだ疑問があるのですが
struct timeval tm;
tm.tv_sec = 5;
setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tm, sizeof(struct timeval));
とやってもrecvfromにてあきらかに12秒近く待たされています...
あんまり厳密に守られるわけではないのでしょうか?
他のシステムコールの呼び出し等にて7秒以上かかってるとも思えないのですが
570:login:Penguin
08/01/24 10:57:59 +a49+I+1
名前解決じゃね?
571:login:Penguin
08/01/24 11:16:26 +0KdBqsj
>>570
ipアドレスをinet_addr直でやってます.
572:login:Penguin
08/01/24 11:27:31 Z64zlv7x
>>571
tm.tv_usecはクリアした?
573:login:Penguin
08/01/24 11:52:54 +0KdBqsj
>>572
なんという不注意...注意散漫になってるようです.
無事指定時間でタイムアウトさせる事ができました.ありがとうございます
574:login:Penguin
08/01/28 19:51:08 oy6mNs1o
現在、2枚のNICを持つマシン上での開発でつまづいています。
それぞれのNICに同じネットワークのIPアドレスを振ります。
例:eth0:192.168.1.10 eth1:192.168.1.11
この状態で、普通にSOCK_DGRAMにてソケットを生成し、適当なIP
アドレスに対して送信します。
すると、どちらのNICから出すかはルーティングテーブルでどちらが
上に位置するかで決まってしまいます。
これをNICを指定して送信したいのですが、可能でしょうか?
RAWソケットを使えばできるのですが、仕様上の制限があって
使えません。
575:login:Penguin
08/01/29 09:35:56 Jv26bMRM
>>574
bindしてから送信 はどうだろう
やったことないけど
576:login:Penguin
08/01/29 09:52:16 BgbmjeIx
>>575
source address を指定したいわけじゃなくて、どのインタフェースから
出したいか、ということだったらそれじゃぁダメだ。
>>574 がなんでそんなことしたいか知らないけど、iptableのmangle tableで
markして、iproute2で該当するパケットだけルーティングテーブルを別けて
やるほうが自然だろう。
URLリンク(www.atmarkit.co.jp)
もしこっちが使えないならrawソケットでやるしかないよ。
577:login:Penguin
08/01/29 15:44:25 Jv26bMRM
ところで
main(){
int a=0;
for(;;){
printf("%d\n",a++);
sleep(1);
}
}
みたいなプログラムを書いたんだけど、これを
$ ./a.out > hoge
としてもhogeに出力されない。
バッファリングされてるみたいなのでprintfの後ろに
sync()やらfsync(1)やら入れてみたけど駄目っぽい
これどうしたらいいんだっけ?
578:login:Penguin
08/01/29 16:25:19 E7XlIkuM
fflush(stdout);
579:login:Penguin
08/01/29 22:53:11 pK88c6Qm
いまどき\nでフラッシュしないstdoutがあるのか・・・
580:login:Penguin
08/01/30 02:17:24 VGRpnUoT
そりゃ・・・、端末に向いてない stdout(3) なら line buffered じゃなくても
いいんでわ。
581:574
08/02/01 11:04:33 KZ/Tojjt
レス遅れてしまいすみません。
>>575
>>576さんの言うとおりbind()をしてから送信すると、L3レベルでは大丈夫
でしたがEtherealでキャプチャするとL2レベルで、MACアドレスが同じに
なっていました。
>>576
提示してもらったWebを確認しました。現在開発しているのはなかなか
処理能力的にシビアな箇所なので、RAWソケットを使用できるように
説得してみます。
582:login:Penguin
08/02/01 19:24:02 MPKtEvB1
というか、bondingしてあとは知らん、ではなんかいかんの?
583:574
08/02/03 21:37:06 mkJ6nZ+Q
>>582
bonding、初耳だったのでぐぐってみましたが中々興味深い技術です。
ですが、仕様上送信元IPアドレス(つまり自分が持つやつ)が複数あり、かつ
対向の種類によって決まってしまっているので使えないようです。
けどこの技術に似たようなのを実装しなければならない機能ブロックも
あるのでこれはこれで提案してみようかと思います。
そういえば、RAWソケットって送信するときにPath MTU Discoveryをソケット
オプションで無効にしてもフラグメントされないなーと思ったら、man raw(7)に
バグとして挙がっているんですね…(使用OSはFedora7)
これも自分で実装しなければならないなぁ。
584:login:Penguin
08/02/03 22:24:34 +lhwKKGQ
>>574
最初から難しいこと考えないで、まず既存の機能 (>>576 の iptable + iproute2等) で
やってみて、それでパフォーマンスなどの問題がないかどうか確認して、どうしても
独自に実装しなくてはならないことを確認してから raw ソケットなり、カーネル
モジュールで何か作るなりすることを検討するほうがいいぞ。
585:login:Penguin
08/02/04 19:10:09 hfVjOmBk
自分のサブネットマスクを取得するのはどう書きますか?
IPアドレスは分かってるとして。
586:login:Penguin
08/02/04 21:29:01 nLbVhZ24
>>585
getifaddrs(3)
587:login:Penguin
08/02/04 21:35:32 G8QRQQli
>>586
IPv4でも使えんの?
588:login:Penguin
08/02/04 21:56:25 nLbVhZ24
>>587
使える。v4でしか使えないバグならglibcが2.3の頃にあったはずだが。
589:login:Penguin
08/02/05 18:12:27 MeDWiyY9
大量のスレッドを生成できなくて困っています。
現在、上限10000個のスレッドを生成したいのですが(そういう仕様なので…OTL)
スタックオーバーフローで生成できていません。
解決策としては、デフォルトでは大きすぎるスタックサイズを
pthred_attr_setstacksize() で減らし、また予めスレッド用スタック領域を
malloc()にて確保し、これをpthread_attr_setstackaddr() にて設定することを
考えました。実際やってみると確かにデフォルトよりは生成数は上がっているの
ですが、到底10000個には追いつきません。
そこで質問なのですが、上記のようなアプローチで合っているのでしょうか?
あと、pthread_attr_setstackaddr() の第2引数(つまり、スタック開始アドレス)は
10000個のスレッドで同一なのでしょうか?
10000回のpthread_create()ループの外で1回だけ
pthread_attr_setstack(&attr, g_pthread_stack) をこーるするのか、
ループの中で
pthread_attr_setstack(&attr, g_pthread_stack+STACK_SIZE*i)のように
スタックサイズ分オフセットを毎回させるのか
が分からないです。
590:login:Penguin
08/02/05 18:15:04 GUozEVBV
それができたとしてうまく動くと思ってやってるの?
591:login:Penguin
08/02/05 20:56:19 SlsIEQrM
何をやるのか、メモリをどれだけ積んでるか、ということによりけりだな。
pthreadとか知らんのでclone(3)で自分でスタックを用意して一万個ほど
スレッドを生成したことはある。使い方によっては普通に動く。
592:login:Penguin
08/02/05 21:03:59 GUozEVBV
それはすごい。
593:login:Penguin
08/02/06 06:41:46 nwp5GfWb
AMD64とかIA64とかでメモリを64GBくらい積めば大丈夫じゃね?
594:login:Penguin
08/02/06 07:25:44 s++avmRm
カーネル側で使うのが各スレッド8KB。ユーザ側のスタックを4KBに抑えれば
スレッドをひとつ増やすごとに必要なのは12KB。10000個ならざっと120MB。
595:login:Penguin
08/02/07 00:54:55 GYgs3mMU
>>589
> あと、pthread_attr_setstackaddr() の第2引数(つまり、スタック開始アドレス)は
> 10000個のスレッドで同一なのでしょうか?
同一で良いはずが無いねえ。スレッド毎に確保ですよ。
スタックの先頭アドレスはページ境界にアラインさせないとsetstackaddrがEINVALで失敗する。
mallocではなくて、posix_memalignかmmapでスタック用のメモリを確保するとよい。
596:585
08/02/08 09:16:22 Tg+rPbrB
サンクス! >>586 , etc...
それググってみましたが、IPアドレスが幾つも取れるじゃないですか。
その中でIPアドレスをマッチングして、そのサブネットマスクを取るしかないんでしたっけ?
それとも、サブネットマスクって1台のマシンに複数IPアドレスがあっても共通?
597:login:Penguin
08/02/09 00:02:49 1XOuKxIO
つーか、IPアドレスに対して、サブネットが対応してるでそ。
インターフェースが2枚あったら、
eth0 : 192.168.1.5/24
eth1 : 10.23.45.67/16
とかさ。
598:login:Penguin
08/02/09 01:25:11 eMQaM6TS
man引けば分かるはずなんだが、今の場合はそれ以前の問題のような。
プログラミングより、くだ質が妥当なような。
599:login:Penguin
08/02/09 01:57:14 pxZu1S51
>>598
manを引いても基本原則知らなきゃわかんないだろうな
こういうのを一番簡単に身につけるには
教科書的なものを頭ッから丸暗記するのが手っ取り早い
600:login:Penguin
08/02/10 17:43:00 AB987pUW
mallocをすると、値が帰ってくる前にsegmentation faultするんだけど・・・
これはライブラリの領域をどこかで破壊しているということでよろしいのでしょうか
601:login:Penguin
08/02/10 18:47:08 rgXsI3qI
gdbで引っ掛けてどこで死ぬかを見極めるべし
まあメモリ破壊の類だとは思うが
602:login:Penguin
08/02/10 20:52:25 +TLKCHqg
>>600
メモリ破壊だったら、Electric Fenceが便利かもね。
603:login:Penguin
08/02/10 20:55:13 qj0nK6Tb
valgrindのほうが。
604:login:Penguin
08/02/10 23:03:17 W61q/SHI
自分に強壮剤がいいよ
605:login:Penguin
08/02/11 12:45:49 0peP2Ab+
>>601-603
ありがとう
ドリンク飲んでがんばります
606:login:Penguin
08/02/11 20:57:09 JHZIo94H
>>600
エラー処理をしているのかと子一時間
NULLが帰ってきたら、どうしてるの?
607:login:Penguin
08/02/11 20:59:54 NXuZoz9l
実際mallocでNULL返ってくるの? CoWなのに。
608:login:Penguin
08/02/11 21:58:06 g58d+k53
>>607
CoWは関係ないような。
というのはともかく、極端に大きなmallocならNULLが戻るよ。
搭載メモリ量とか、32bit/64bitにもよるかもしれないけど、malloc(1*1024*1024*1024)とか。
609:login:Penguin
08/02/11 22:59:43 v7vkIa+N
>>607
物理ページ自体は必要ないが、メモリ空間が足りなくなる可能性はある
x86 (32bit) だと、ユーザ空間が3GB・カーネル空間が1GBで分けられてたはずだから、
多分2.5GB確保は成功して、3GB確保は失敗すると思う
610:login:Penguin
08/02/11 23:27:43 g58d+k53
>>609
適当なプロセスをcat /proc/pid/mapsしてみればわかるけど、.soやらなにやらが3GBのそこかしこにmapされてしまっているから、
2.5GB連続で仮想メモリ確保ってのは難しいと思うよ。
例えばfirefoxあたりだと色々mmapされすぎていて全く無理ですね。
611:login:Penguin
08/02/11 23:49:20 H5r6W4j2
>>606
>>600は「値が帰ってくる前に」と言ってるんだから、NULLが帰ってくるも
ヘッタクレもないと思うんだが。
当然、返り値をチェックしようとしているけど、帰ってくる前にSIGSEGVなんだろ。
612:login:Penguin
08/02/12 21:41:58 i/htmIMa
ファイルAとBが同一パーティション上にあるかどうかLinux的にはどうやって判断すればいいんでしょうか
613:login:Penguin
08/02/12 23:16:42 6Xg+LWoP
パーティションよりファイルシステムの場所を調べる方が汎用性があって
尚且つ簡単そうで良さげ。スクリプトでやっつけるならdfにパスを食わせて
出たファイルシステムを比較すれば一丁上がり、、、かなぁ。
どうしてもパーティション、という場合は知らん。
614:login:Penguin
08/02/12 23:25:33 vZRSZKGy
今Linuxが手元にないんだけど、レギュラーファイルに対してstat(2)すると
struct stat::st_devってどうなるんだっけ?
615:login:Penguin
08/02/12 23:36:11 i/htmIMa
>>613
ありがとうございます。mtab読みに行くことにしました。
616:login:Penguin
08/02/12 23:48:38 943cnSqV
>>614
vmware+Linux入れなよ
617:login:Penguin
08/02/13 00:42:27 XbwK8Zpg
>>614
普通はそれだと思う
618:614
08/02/13 01:03:45 eUvEe13x
>>617
汲み取ってくれて、ありがとう。
619:login:Penguin
08/02/13 07:33:31 pBknmnOU
結局、パーティションまでは分からんということだな。
620:login:Penguin
08/02/13 07:47:41 hT3T8ff2
>>619
>>614にあるのじゃどうしてだめなの?
621:login:Penguin
08/02/13 11:59:04 G1ltJVUD
HTTPクライアントを作ろうと思いますが、
自分の空きポートはどうやったら取得できますか?
622:login:Penguin
08/02/13 12:14:39 5QyCkyQ9
>>621
HTTPクライアントならサーバの80につなげば
いいだけじゃない?空きポートを知る必要が
わからん。(connect()で80につなげばいいだけ。)
クライアントの使用するポートはプロトコルスタックが
空いているポートを適当に割り振ってくれる。
623:621
08/02/13 12:23:24 G1ltJVUD
>>622
あっ、そーですか。有難う。
httpで相手のポート80に接続して、writeするだけですね。
(tcpと大して変わらないのかって、tcpで接続するプログラム書いたことないけど)
関係ないけど、それらがC/C++のクラスライブラリになってたりしませんよね?
624:login:Penguin
08/02/13 12:25:48 YOhJXxZI
>>623
curl
と言いたいけど、お前にはsystem("wget URLリンク(wwwwwwwww)");で充分だ。
625:login:Penguin
08/02/13 13:21:11 hYkhPPAJ
>>623
TCP 以外の何でアクセスするつもりなんだ?
626:login:Penguin
08/02/13 18:02:37 G1ltJVUD
>>625
HTTP
ところで、HTTPエンコードする標準メソッドなんてありますか?
627:login:Penguin
08/02/13 18:20:50 G1ltJVUD
知りたいのは、HTTP エンコードじゃなくて、URL エンコードでしたorz
628:login:Penguin
08/02/13 19:29:27 Mx9E0jHA
>>626
HTTPってTCPじゃね?
629:login:Penguin
08/02/13 19:59:54 JBOJRmRv
>>626を見ると、>>624は正しかったんだな、と思った。
630:login:Penguin
08/02/13 20:54:09 eUvEe13x
>>628
あらゆる意味で違うと、いちおう突っ込んでおけばいいかな?
631:login:Penguin
08/02/13 21:03:49 N8sc8JVE
>>628
TCPってIPじゃね?
以降物理層まで続く↓
632:正義の味方
08/02/13 23:20:51 5UuGIiF+
地球を救う正義の味方、今こそ参上!!
URLリンク(seiginomikata.xxxxxxxx.jp)
633:login:Penguin
08/02/14 01:22:24 AMxoEq8N
>>624 そんなあなたに URLリンク(www.blue.sky.or.jp)
634:login:Penguin
08/02/14 05:16:55 vPDIK5xn
HTTP on TCP on IP on Ethernet
635:login:Penguin
08/02/14 10:46:16 yt/o7Lpq
UDPはTCPじゃないおねw
636:login:Penguin
08/02/22 11:00:23 G/AgynaC
自分が開いているファイルポインタを監視して,
ほかのプロセスから見られているかどうかをチェックする方法ってありますかね?
637:login:Penguin
08/02/23 18:26:40 fMtbJMPF
inotify...でできたようなできなかったような。
638:login:Penguin
08/02/24 23:17:29 BrtZUi2N
URLリンク(streaming.linux-magazin.de)
cmakeについてのリアルタイム講演が聞けるそうな
639:login:Penguin
08/02/25 17:29:44 gh7YVSGk
gdbってスレッドの中まで追跡してくれないよね?
今開発しているプログラムが生成したスレッドの中で何かおかしなことを
やってるみたいなのだが再現性が100%にならず困っている.
gdbでlistとかやっても表示されるのはスレッドを生成してる
関数のところが表示される.
せめてどこで落ちてるのか分かればいいんだが...
640:login:Penguin
08/02/25 17:56:48 cSNR/6sC
マルチコア環境上で、指定したスレッドを実行しているCPU番号を取得する
方法はないでしょうか?
ちょうど、RTLinuxでいうrtl_getcpuid()のようなものを探しています。
# sched_setaffinity() を利用したCPU括り付けでのマルチスレッドの動作確認を
しようと思っています。
641:login:Penguin
08/02/25 18:39:00 /pUYRVYK
info threads
thread thread_no
642:login:Penguin
08/02/26 22:09:55 Gzm7dZQg
>>640
CPU番号を取得するのがカーネル空間なのかユーザ空間なのかで違う。
カーネル空間ならthread_infoのcpuを読めばいい。
ユーザ空間ならthread_infoのcpuを読むようなカーネルモジュールを作って
システムコールで呼ぶしかない。ただ、システムコールのためにカーネル空間に入って
戻ってきたときには別のCPUに切り替えられているかもしれないので使い物にならない。
643:login:Penguin
08/02/26 22:12:32 Gzm7dZQg
>>636
fuserでも呼べば?
644:login:Penguin
08/02/27 01:24:58 YHDpNSRs
>>639
スレッドの本を読んで勉強するほうが早い
645:login:Penguin
08/02/27 02:36:14 s4UfhcJi
>>639
>>641のコマンドをgdbで実行すれば追跡できるけど?
gdbはVer.5辺りからスレッドに対応してるよ。
646:login:Penguin
08/03/04 05:37:01 hH79PlpS
Linuxではディレクトリをopenしてファイルディスクリプタを
得ることはできないのでしょうか?
647:login:Penguin
08/03/04 06:57:58 YiS1gKTk
>>646
opendir?
648:login:Penguin
08/03/04 11:16:05 c6KWa7j/
ファイルディスクリプタが欲しいんですよ。
ディレクトリのディスクリプタに対してlockfしたらどうなるか試したかったもので。
649:login:Penguin
08/03/04 11:18:58 f138xmmP
man open
O_DIRECTORY
650:login:Penguin
08/03/05 21:11:41 DSOAwXvG
(引数+環境変数)の長さはARG_MAXで制限されると見たのですが、実験してみると
ARG_MAXをはるかに超えて環境変数を保存できるようです。
これはそういう仕様と理解していいのでしょうか?ポインタでも示していただけると幸いです。
Linux ru 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char* str;
int i;
int size = 10000*1024;
str = malloc(size);
fprintf(stderr, "ARG_MAX=%d\n", sysconf(_SC_ARG_MAX));
memset(str, 'a', size);
memcpy(str, "hoge=", 5);
putenv(str);
printf("%s", getenv("hoge"));
free(str);
return 0;
}
651:login:Penguin
08/03/06 20:49:10 xYqhiEhk
>>650
仕様かどうかは知らんが、free(str)の前にsystem("ls");といれて、
straceつきで実行してみればARG_MAXがどこに効いているかわかるんじゃね?
652:login:Penguin
08/03/07 02:06:25 6CTqh5eF
650じゃないけどやってみた。
現在の環境変数hogeの5文字目を読むプログラムenvcをsystem()で実行。
execve("/bin/sh", ["sh"..., "-c"..., "./envc"...], ["other-env=.....", "hoge=aaaaabaaaaaaaaaaaaaaaaaaaaa"...]) = -1 E2BIG (Argument list too long)
exit_group(127) = ?
で失敗するよう。
自プロセス内のputenv,getenvは単にアドレスを保存しているだけみたいな感じ。
653:login:Penguin
08/03/07 08:22:54 UMdAZxi/
Linuxでどうやってるのか知らないけど、古典的なUnixだとputenvしたときには
書く場所がなければmallocして場所を作るしなあ
654:650
08/03/07 18:57:12 WLDLR5XW
ありがとうございます。
そういえば FreeBSD の putenv も malloc していたような記憶があります。
655:login:Penguin
08/03/09 22:25:35 OicC4WBL
kernel 2.6.22でnetdevice.hのnet_deviceに
なぜstruct net_device *next消えてるの?
linux-sourceにはあるが
linux-headerには無い
なぜ?
656:login:Penguin
08/03/09 23:46:44 8q2J0afq
>>655
linux-(source|header)にある/ないは知らんが、struct net_device::next
が消えた理由は以下らしいよ。
URLリンク(git.kernel.org)
657:login:Penguin
08/03/11 01:36:58 Rs8OmFO7
>>655
なるほど解ったどもね
今snullベースで
仮想Ethernetデバイスを作ってるんだけど
たとえばeth0がすでに登録されてて
eth0のパケットをsnull0で送受信したい場合って
initの中で
dev_get_by_name("eth0);
でeth0のnet_devicはとって来れるけどこいつを
どうやって料理すればいいんだ?
なーんにも思いつかないw
658:login:Penguin
08/03/15 18:03:02 NRAbwdcX
/usr/include/pgsql/server/postgres.h と /usr/include/wand/MagickWand.h を
一緒に #include すると、コンパイル時に以下の警告が出るのですが、
これってどうにかならないもんしょうか?
/usr/include/pgsql/server/pg_config.h:14 から include されたファイル中,
/usr/include/pgsql/server/c.h:53 から,
/usr/include/pgsql/server/postgres.h:48 から,
main.c:9 から:
/usr/include/pgsql/server/pg_config_x86_64.h:571:1: 警告: "PACKAGE_BUGREPORT" が再定義されました
/usr/include/wand/wand-config.h:10 から include されたファイル中,
/usr/include/wand/MagickWand.h:29 から,
main.c:8 から:
/usr/include/wand/wand-config-64.h:491:1: 警告: ここが以前の宣言がある位置です
以下が重複しているようです。
PACKAGE_BUGREPORT
PACKAGE_NAME
PACKAGE_STRING
PACKAGE_TARNAME
PACKAGE_VERSION
ググっても分からなかったので、せめてヒントでももらえると助かります。
環境はCentOS 5、postgresql-8.2.5-2PGDG、ImageMagick-6.2.8.0-3.el5.4 です。
コンパイルコマンドは以下のような感じです。
gcc main.c -m64 -I/usr/include/pgsql/server -lpq -lWand
659:login:Penguin
08/03/15 20:05:58 f5+YWLcF
>>658
そのヘッダの中身見てないけど、警告がでないようにするなら、
1. postgres.h,MagickWand.hを#includeしている間に#undef PACKAGE_*
を入れる。
2. main.cから、postgres.hが必要な部分とMagickWand.hが必要な部分を
別々のファイルに関数として切り出して、それぞれのファイルでは
postgres.hかMagickWand.hのどちらかのみ#includeする。
のいずれかでどうよ?
660:login:Penguin
08/03/15 20:50:51 NRAbwdcX
>>659
やっぱそうするしかないよねー。
前者の方法でやってみるー。ありー。
661:login:Penguin
08/03/15 21:36:12 O4AlaY1A
ABが特に詳しく日本外務省について暴露しています
福田が尖閣諸島を中国に売り渡そうとしている!
外務省と福田政権が日本を中国に売り渡す・・・
青山繁晴氏が実際に見てきた日本の癌
@ URLリンク(www.youtube.com)
A URLリンク(www.youtube.com)
B URLリンク(www.youtube.com)
662:login:Penguin
08/03/15 22:23:04 iDC6xMbb
kernel空間でキューを作ってmmapで参照させたいんだけど
余計な処理が込み入ってないサンプルってありますか?
ドライバの形式はなんでもかまいません。
663:login:Penguin
08/03/17 00:43:36 nawcmHh0
>>662
お前K社か?
664:login:Penguin
08/03/17 12:33:53 nScJcaBW
自動停止してくれません。判りますでしょうか?
前提条件:テスト用に/root/test_stop.sh に、 プロセス停止のシェルプログラム作成。
(ちゃんと停止しないとファイルが壊れるため)
1:/etc/rc.d/init.d/test_stop として、下記を作成
-----------------------------
#!/bin/bash
# Stop
/root/test_stop.sh
-----------------------------
2:/etc/rc.d/init.d/test_stop に 実行権をつける
3:リンクの作成
ln -s /etc/rc.d/init.d/test_stop /etc/rc.d/rc3.d/K99test_stop
コマンドラインで
/root/test_stop.sh
/etc/rc.d/init.d/test_stop と打ち込むと実行(正常に停止して)されますが、
サーバーを再起動しても動いて(正常に停止して)くれません。(涙
665:伊藤
08/03/17 15:29:49 CWhG8eFa
>>664
エスパーのオレが回答する。
パスが通っていない。
init.dの下にある他のファイルを参考にパスを通しなさい
/bin,/sbin/usr/bin/usr/sbin くらいは通さないと駄目かと。
>>666
お前アホだろw
666:664
08/03/17 15:49:11 nScJcaBW
??
パスですか? 他のファイルをみてますが、、今ひとつ??
667:login:Penguin
08/03/17 17:01:34 oHIFzbD+
uClinuxでpthreadって使えるでしょうか
全く調べてないですけど
668:login:Penguin
08/03/17 21:40:09 hxyCMaK/
>>664
直接ln -sなんてやってるのもまずいし、そもそもディストロが何か書いていない
時点で、rc.d以下がどういう挙動をするのかということがRHELやらSLESやら
ディストロによって違うということが分かってないだろ。
669:login:Penguin
08/03/17 21:49:58 hxyCMaK/
つーか、どういう動作を期待していたのか、何を試してどうなったのかも分からんが、
スクリプトの書き方からして根本的に駄目だ。
他のスクリプトをひとつでも見れば、どうしようもなく間違ってることくらい
すぐに気づくはずなんだが。
670:login:Penguin
08/03/17 22:06:58 e/wCVwfQ
>>669
じゃあ手本見せてやれよ
分からない分からないばかり言ってないでさ
671:login:Penguin
08/03/17 22:21:17 YyeBPwCr
手本は多数インストールされてるだろが。それを見れ。
672:login:Penguin
08/03/17 22:41:19 6m6H6SB/
>>663
Kってどこだぉ?
673:login:Penguin
08/03/17 23:18:23 EaiHugoC
>>672
Kentucky Fried Chicken に決まってるじゃないの
674:login:Penguin
08/03/17 23:20:52 +R0hndtT
>>664
runlevel 3は再起動じゃなかったりするわけだが。
/etc/inittabに説明が書いてないか?
ついでにK99じゃ遅すぎて、呼ばれる前にkill -TERMくらうと思うわけで。
>>667
使えるはず。
kernelじゃなくてuClibc側が対応してなかったりする可能性もあるが。
675:login:Penguin
08/03/17 23:46:58 s0icvwwX
>>673
カーネルサンダースかw
676:login:Penguin
08/03/17 23:58:03 Rzp2mBZf
>>674
667ですが使えました。
あろがとうございました。
677:login:Penguin
08/03/17 23:58:28 Rzp2mBZf
ありがとうございました!
678:login:Penguin
08/03/18 00:45:47 pdz2c3Ck
KFCか
679:login:Penguin
08/03/18 23:52:30 pdz2c3Ck
24時間で誤差1ミリsec以内に
時間を調節したいんだけど
NTPだけじゃどうにもならん
こうゆうときどうするの?
680:login:Penguin
08/03/18 23:55:57 owXiyD5i
>>679
KFCか、あきらめるんじゃないか?
681:login:Penguin
08/03/19 00:00:57 mZKM+MPD
GPSから受信するのがいいんじゃないか?
682:login:Penguin
08/03/19 00:34:49 jmy0fpSq
受信機からシリアルで送ってもらうと、1msくらい余裕でぶれそうな
気がするでよ。
システムクロックをTCXOで作ればどうにかなりますかねえ。
そもそも何でそこまでの精度が必要なのか気になりますな。
683:login:Penguin
08/03/19 01:52:51 Dy7hJrHZ
>>679
さすがに1日1秒もずれねーよなー
っていう前提の下に、1分に1回時刻合わせする
684:login:Penguin
08/03/19 01:59:47 hI6xFIVz
で、肝心のNTPサーバが他人様の物で、毎分の御アクセス
ありがとうございます。というメールとともにアク禁にされると。
685:login:Penguin
08/03/21 10:51:26 GPURSs20
puttyなターミナルから入った最近のLinuxで、ncursesw使ってutf-8を表示しようとしたのだけど、
mvprintw(1, 0, "※"); mvprintw(1, 1, " "); mvprintw(1, 2, "※"); mvprintw(1, 1, "☆");
なら期待どおり ※☆※ になるのに、
mvprintw(1, 0, "※"); mvprintw(1, 1, " "); mvprintw(1, 2, "※"); mvprintw(1, 1, "あ");
と最後の☆を変えただけで ※あ に表示が崩れるのは、どこに原因があるのでしょうか?
686:login:Penguin
08/03/21 23:04:14 08/5PZeA
IMEの入力モードを変換するAPIってあるんでしょうか?
687:login:Penguin
08/03/26 01:52:22 cX9Hm6ZW
Linuxで各スレッドが何回Mutexかけて
失敗したとか統計情報ってどこにあるの?
688:login:Penguin
08/03/26 21:37:02 3c6tutxx
>>687
はっはっは
無いよ
689:login:Penguin
08/03/27 02:27:08 PiHD4Bq/
ねーのか
腐ってるんだな本当に
windowsがやっぱ最強だな
690:login:Penguin
08/03/27 23:02:19 vcJKwHhP
WindowsはMutexかけ損なった統計があるのか
スゴイな。どうやったら取れるんだい?
691:login:Penguin
08/03/28 11:01:02 HvPMQUTZ
イベントログじゃね?
ところで、質問です。
iconvの使い方、サンプルコードがあれば、教えてください。
やりたいことは
>SJIS 文字列と UTF8 文字列を相互に変換する
ことです
692:login:Penguin
08/03/28 13:32:01 i9tqqt3j
iconv -f SJIS -t UTF-8
iconv -t SJIS -f UTF-8
693:login:Penguin
08/03/28 15:51:47 HvPMQUTZ
ありがとうございます。
プログラムから使う場合も教えてくださいorz
694:login:Penguin
08/03/28 15:56:36 s6QtoqP9
system()
695:login:Penguin
08/03/28 17:40:02 5TgcLqfx
シェルスクリプトからそのまま使え。
C99(UTF-8->SJIS)
char *instr = "文字列";
char *i = instr;
size_t i_len = strlen(i);
char out[256];
char *o = out;
size_t o_len = sizeof(out);
iconv_t cd = iconv_open("SJIS", "UTF-8");
int r = iconv(cd, &i, &i_len, &o, &o_len);
iconv_close(cd);
iconvの引数は、普通cd以外全部書き換わるから、元のアドレスはどっかに取っとけ。
696:login:Penguin
08/03/28 18:06:35 HvPMQUTZ
詳説サンクス>>695
ところで、現在の文字コードはどうやってとりますか?
環境変数のLANGですか?
URLリンク(q.hatena.ne.jp)
697:login:Penguin
08/03/28 18:11:06 s6QtoqP9
スレリンク(unix板:202-205番)n
の人?
698:login:Penguin
08/03/28 18:12:36 HvPMQUTZ
当たり!
これが解決すれば、もう無問題なんですが。
699:login:Penguin
08/03/28 18:13:37 5TgcLqfx
スレリンク(tech板:26番) は?
700:login:Penguin
08/03/28 18:14:29 s6QtoqP9
>>698
なら板違い。
701:login:Penguin
08/03/28 21:23:25 s9WZiFsz
環境変数は
・プロセス毎に持つものである。
・どの環境変数をどう使うかは各プロセスに自由に任されている。OSは関知しない。
以上を踏まえて自分の目的が達成出来るか否か検討するよろし。
702:login:Penguin
08/03/31 13:16:40 psA1qVjr
黒タイツの暗黒シュシュトリアン
703:login:Penguin
08/04/07 09:04:17 tYWKZpa/
C/C++でHDDの使用量を取得したいのですがどのようにすればよいのでしょうか?
704:login:Penguin
08/04/07 10:52:59 YCXHql+C
dfのソースでも読んでみれば
705:login:Penguin
08/04/07 10:54:35 eTKSmIvZ
・kernel様にお伺いする。
・アプリからI/Oポートを直接操作する。
かな。
706:login:Penguin
08/04/07 13:33:34 HanpYLz1
>>703
statfsを呼べばおk
続きはmanで
707:login:Penguin
08/04/07 16:33:38 K3aneVtn
次期C++ではinline fortranが可能に!
スレリンク(tech板)
仕様肥大化しすぎ
708:login:Penguin
08/04/07 18:02:15 voVdLXCc
C++好きだけどいい加減自重してほしいとは思うな
709:login:Penguin
08/04/07 20:42:31 ky4RCRjO
正直ワロタ。もはやネタの域にきとるな。次はinline C#とかw
710:login:Penguin
08/04/08 14:18:36 xYr9GeEI
スレッド間の排他について質問です。
現在、共有資源の内容を変更(新規追加・内容変更・削除)を行うスレッドが1つと
共有資源の参照のみを行うスレッドがN(N>=2)の構成のアプリケーションを開発
しています。
今まで、どちらのスレッドもアクセスするには同じMutexによる排他を行っていた
のですが、どうにもスループットが出ないので、参照のみを行うスレッド間を並列に
動かせるようにするための方法を探していたところ、読み書きロック(正式には
何と呼ぶのでしょうか?)を発見しました。そこで、
変更するスレッド:変更前後で pthread_rwlock_wrlock() / pthread_rwlock_unlock()
参照するスレッド:参照前後で pthread_rwlock_rdlock() / pthread_rwlock_unlock()
というようにして試験したところ、劇的にスループットが向上しました。
これはこれで良かったんですが、となるとMutexの存在意義について疑問が出てきました。
今後、あらゆるMutexを使用している場面で、読み書きロックを使用し、Mutexの出番は
ない!と断言してしまって良いのでしょうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4051日前に更新/218 KB
担当:undef