[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/25 17:52 / Filesize : 218 KB / Number-of Response : 981
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Linuxプログラミング



1 名前:login:Penguin [2005/06/06(月) 11:19:09 ID:uXQqRJXF]
Linux のプログラミングに関する話題です

545 名前:login:Penguin mailto:sage [2008/01/20(日) 17:33:57 ID:3cxUYgCe]
同感

546 名前:login:Penguin mailto:sage [2008/01/20(日) 19:32:41 ID:60pqkMpi]
かといってこんなのをプ板にのさばらせておくわけにもいかないからな

547 名前:login:Penguin mailto:sage [2008/01/20(日) 19:43:59 ID:m3nXxor1]
プ板てw

548 名前:login:Penguin mailto:sage [2008/01/20(日) 20:15:53 ID:60pqkMpi]
ムだム。間違えた。

549 名前:login:Penguin mailto:sage [2008/01/20(日) 21:25:35 ID:lhDKawjW]
なんでムなん?

550 名前:login:Penguin mailto:sage [2008/01/20(日) 22:03:02 ID:O/GA+k/y]
はるか昔、ムー族とマ族の争いがあって、千年続き、
それを嘆いた神がプ大陸を二つに分けたと伝えられる。

551 名前:login:Penguin mailto:sage [2008/01/21(月) 01:51:38 ID:EPN4E+gf]
>>544
環境依存じゃないか?
UNIX なら stty(1) を見ろとなる。
で、プ^H^Hム板の質問スレなら Ctrl+Z or F6 な人もいるだろ。

552 名前:login:Penguin mailto:sage [2008/01/21(月) 21:33:07 ID:DS13UDOd]
>>549
プログラ「マ」(について語る|がダベる)板、通称マ板と区別するため

553 名前:login:Penguin [2008/01/22(火) 22:56:28 ID:3SjBwwbG]
pthreadtypes.hで定義されているpthread_attr_t構造体ですが、
2.6.9と2.6.18で見比べたところ全く違う内容になっています。
というかpthreadtypes.h自体に大幅な変更があったような。
いつのバージョンで変わったか分かる人いませんか?



554 名前:login:Penguin mailto:sage [2008/01/22(火) 23:06:29 ID:1aLYQ0Xu]
struct sk_buffをそのままユーザ空間に
ひっぱりだしたいんだけど

どうすればいいのかなぁ

555 名前:login:Penguin mailto:sage [2008/01/22(火) 23:11:26 ID:Z7iV0h+U]
>>553
ユーザアプリからは、構造体の中身を参照しちゃいかんのとちゃう?

556 名前:553 [2008/01/23(水) 00:20:47 ID:rX2IdG6k]
>>555
まじですか!?
そういうつくりになってたんすね。
pthread_attr_init()系の関数でアクセスですかね。
ありがとうございます。

557 名前:login:Penguin mailto:sage [2008/01/23(水) 02:08:02 ID:n7QxPJKv]
すまんstatを使ってファイルサイズを調べたいんだけど
if (stat(FileSt, &sb) == 1)
{
 (sb.st_size>0)
 {
  ifs_flg=1;
 }
}

ファイルが存在するか?するならサイズは?みたいにしてます。
これを1行でstat(FileSt, &sb->st_size) >0
みたいに出来ませんか?


558 名前:login:Penguin mailto:sage [2008/01/23(水) 02:08:50 ID:n7QxPJKv]
あ、ファイルは存在する前提です

559 名前:login:Penguin mailto:sage [2008/01/23(水) 04:08:18 ID:iwlYPuMF]
statなんたらって自前の関数用意すれば

560 名前:login:Penguin mailto:sage [2008/01/23(水) 11:43:41 ID:G50LtKQp]
>>557
単純にショートカットじゃダメ?
if ((stat(FileSt,&sb)==1) && (sb.st_size>0)) {
...
}

561 名前:login:Penguin mailto:sage [2008/01/24(木) 01:44:45 ID:XcZJxRmS]
>>560
それやってたんですが、うまく行かない。
あ、括弧なしだったからかな?
括弧つけてみます

562 名前:login:Penguin mailto:sage [2008/01/24(木) 09:06:49 ID:+0KdBqsj]
recvfromってタイムアウト設定はできないんですか?
データが届かなかったら永久に待ってそうです

UDPのプログラムで任意の時間返答が無かったら
さっさとrecvfromを抜けたいんですが...

563 名前:login:Penguin mailto:sage [2008/01/24(木) 09:12:54 ID:+a49+I+1]
>>562
selectを使いたくないならSO_RCVTIMEO



564 名前:login:Penguin mailto:sage [2008/01/24(木) 09:44:54 ID:+0KdBqsj]
>>663
int timeout = 5000

setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));
とやっても抜けられないです...やはりずっととまったままです


565 名前:login:Penguin mailto:sage [2008/01/24(木) 09:51:20 ID:+a49+I+1]
struct timevalとintって?同じもの?だっけ?5000秒?待ったり?

566 名前:login:Penguin mailto:sage [2008/01/24(木) 10:06:19 ID:A5lAfTzI]
>>565
struct timeval と int は別

567 名前:login:Penguin mailto:sage [2008/01/24(木) 10:17:10 ID:FNc6yZ5O]
565 は知ってて書いているようにしか見えない。

>>564
ためしてないが、その setsockopt(2) は EINVAL になってたりしないか?

568 名前:login:Penguin mailto:sage [2008/01/24(木) 10:20:13 ID:+0KdBqsj]
>>565-567
できました!

569 名前:login:Penguin mailto:sage [2008/01/24(木) 10:27:34 ID:+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 mailto:sage [2008/01/24(木) 10:57:59 ID:+a49+I+1]
名前解決じゃね?

571 名前:login:Penguin mailto:sage [2008/01/24(木) 11:16:26 ID:+0KdBqsj]
>>570
ipアドレスをinet_addr直でやってます.

572 名前:login:Penguin mailto:sage [2008/01/24(木) 11:27:31 ID:Z64zlv7x]
>>571
tm.tv_usecはクリアした?


573 名前:login:Penguin mailto:sage [2008/01/24(木) 11:52:54 ID:+0KdBqsj]
>>572
なんという不注意...注意散漫になってるようです.
無事指定時間でタイムアウトさせる事ができました.ありがとうございます



574 名前:login:Penguin mailto:sage [2008/01/28(月) 19:51:08 ID:oy6mNs1o]
現在、2枚のNICを持つマシン上での開発でつまづいています。

それぞれのNICに同じネットワークのIPアドレスを振ります。
例:eth0:192.168.1.10 eth1:192.168.1.11

この状態で、普通にSOCK_DGRAMにてソケットを生成し、適当なIP
アドレスに対して送信します。
すると、どちらのNICから出すかはルーティングテーブルでどちらが
上に位置するかで決まってしまいます。

これをNICを指定して送信したいのですが、可能でしょうか?
RAWソケットを使えばできるのですが、仕様上の制限があって
使えません。

575 名前:login:Penguin mailto:sage [2008/01/29(火) 09:35:56 ID:Jv26bMRM]
>>574
bindしてから送信 はどうだろう
やったことないけど

576 名前:login:Penguin mailto:sage [2008/01/29(火) 09:52:16 ID:BgbmjeIx]
>>575
source address を指定したいわけじゃなくて、どのインタフェースから
出したいか、ということだったらそれじゃぁダメだ。

>>574 がなんでそんなことしたいか知らないけど、iptableのmangle tableで
markして、iproute2で該当するパケットだけルーティングテーブルを別けて
やるほうが自然だろう。
www.atmarkit.co.jp/fsecurity/rensai/lids12/lids01.html
もしこっちが使えないならrawソケットでやるしかないよ。

577 名前:login:Penguin [2008/01/29(火) 15:44:25 ID:Jv26bMRM]
ところで
main(){
 int a=0;
 for(;;){
  printf("%d\n",a++);
  sleep(1);
 }
}
みたいなプログラムを書いたんだけど、これを
$ ./a.out > hoge
としてもhogeに出力されない。
バッファリングされてるみたいなのでprintfの後ろに
sync()やらfsync(1)やら入れてみたけど駄目っぽい
これどうしたらいいんだっけ?

578 名前:login:Penguin mailto:sage [2008/01/29(火) 16:25:19 ID:E7XlIkuM]
fflush(stdout);

579 名前:login:Penguin mailto:sage [2008/01/29(火) 22:53:11 ID:pK88c6Qm]
いまどき\nでフラッシュしないstdoutがあるのか・・・

580 名前:login:Penguin mailto:sage [2008/01/30(水) 02:17:24 ID:VGRpnUoT]
そりゃ・・・、端末に向いてない stdout(3) なら line buffered じゃなくても
いいんでわ。

581 名前:574 mailto:sage [2008/02/01(金) 11:04:33 ID:KZ/Tojjt]
レス遅れてしまいすみません。

>>575
>>576さんの言うとおりbind()をしてから送信すると、L3レベルでは大丈夫
でしたがEtherealでキャプチャするとL2レベルで、MACアドレスが同じに
なっていました。

>>576
提示してもらったWebを確認しました。現在開発しているのはなかなか
処理能力的にシビアな箇所なので、RAWソケットを使用できるように
説得してみます。

582 名前:login:Penguin mailto:sage [2008/02/01(金) 19:24:02 ID:MPKtEvB1]
というか、bondingしてあとは知らん、ではなんかいかんの?

583 名前:574 mailto:sage [2008/02/03(日) 21:37:06 ID:mkJ6nZ+Q]
>>582

bonding、初耳だったのでぐぐってみましたが中々興味深い技術です。

ですが、仕様上送信元IPアドレス(つまり自分が持つやつ)が複数あり、かつ
対向の種類によって決まってしまっているので使えないようです。

けどこの技術に似たようなのを実装しなければならない機能ブロックも
あるのでこれはこれで提案してみようかと思います。

そういえば、RAWソケットって送信するときにPath MTU Discoveryをソケット
オプションで無効にしてもフラグメントされないなーと思ったら、man raw(7)に
バグとして挙がっているんですね…(使用OSはFedora7)
これも自分で実装しなければならないなぁ。



584 名前:login:Penguin mailto:sage [2008/02/03(日) 22:24:34 ID:+lhwKKGQ]
>>574
最初から難しいこと考えないで、まず既存の機能 (>>576 の iptable + iproute2等) で
やってみて、それでパフォーマンスなどの問題がないかどうか確認して、どうしても
独自に実装しなくてはならないことを確認してから raw ソケットなり、カーネル
モジュールで何か作るなりすることを検討するほうがいいぞ。

585 名前:login:Penguin [2008/02/04(月) 19:10:09 ID:hfVjOmBk]
自分のサブネットマスクを取得するのはどう書きますか?
IPアドレスは分かってるとして。

586 名前:login:Penguin mailto:sage [2008/02/04(月) 21:29:01 ID:nLbVhZ24]
>>585
getifaddrs(3)

587 名前:login:Penguin mailto:sage [2008/02/04(月) 21:35:32 ID:G8QRQQli]
>>586
IPv4でも使えんの?

588 名前:login:Penguin mailto:sage [2008/02/04(月) 21:56:25 ID:nLbVhZ24]
>>587
使える。v4でしか使えないバグならglibcが2.3の頃にあったはずだが。

589 名前:login:Penguin mailto:sage [2008/02/05(火) 18:12:27 ID: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 mailto:sage [2008/02/05(火) 18:15:04 ID:GUozEVBV]
それができたとしてうまく動くと思ってやってるの?

591 名前:login:Penguin mailto:sage [2008/02/05(火) 20:56:19 ID:SlsIEQrM]
何をやるのか、メモリをどれだけ積んでるか、ということによりけりだな。
pthreadとか知らんのでclone(3)で自分でスタックを用意して一万個ほど
スレッドを生成したことはある。使い方によっては普通に動く。

592 名前:login:Penguin mailto:sage [2008/02/05(火) 21:03:59 ID:GUozEVBV]
それはすごい。

593 名前:login:Penguin mailto:sage [2008/02/06(水) 06:41:46 ID:nwp5GfWb]
AMD64とかIA64とかでメモリを64GBくらい積めば大丈夫じゃね?



594 名前:login:Penguin mailto:sage [2008/02/06(水) 07:25:44 ID:s++avmRm]
カーネル側で使うのが各スレッド8KB。ユーザ側のスタックを4KBに抑えれば
スレッドをひとつ増やすごとに必要なのは12KB。10000個ならざっと120MB。

595 名前:login:Penguin [2008/02/07(木) 00:54:55 ID:GYgs3mMU]
>>589

> あと、pthread_attr_setstackaddr() の第2引数(つまり、スタック開始アドレス)は
> 10000個のスレッドで同一なのでしょうか?
同一で良いはずが無いねえ。スレッド毎に確保ですよ。

スタックの先頭アドレスはページ境界にアラインさせないとsetstackaddrがEINVALで失敗する。
mallocではなくて、posix_memalignかmmapでスタック用のメモリを確保するとよい。


596 名前:585 mailto:sage [2008/02/08(金) 09:16:22 ID:Tg+rPbrB]
サンクス! >>586 , etc...

それググってみましたが、IPアドレスが幾つも取れるじゃないですか。
その中でIPアドレスをマッチングして、そのサブネットマスクを取るしかないんでしたっけ?

それとも、サブネットマスクって1台のマシンに複数IPアドレスがあっても共通?

597 名前:login:Penguin mailto:sage [2008/02/09(土) 00:02:49 ID:1XOuKxIO]
つーか、IPアドレスに対して、サブネットが対応してるでそ。
インターフェースが2枚あったら、
eth0 : 192.168.1.5/24
eth1 : 10.23.45.67/16
とかさ。

598 名前:login:Penguin mailto:sage [2008/02/09(土) 01:25:11 ID:eMQaM6TS]
man引けば分かるはずなんだが、今の場合はそれ以前の問題のような。
プログラミングより、くだ質が妥当なような。

599 名前:login:Penguin mailto:sage [2008/02/09(土) 01:57:14 ID:pxZu1S51]
>>598
manを引いても基本原則知らなきゃわかんないだろうな
こういうのを一番簡単に身につけるには
教科書的なものを頭ッから丸暗記するのが手っ取り早い

600 名前:login:Penguin mailto:sage [2008/02/10(日) 17:43:00 ID:AB987pUW]
mallocをすると、値が帰ってくる前にsegmentation faultするんだけど・・・
これはライブラリの領域をどこかで破壊しているということでよろしいのでしょうか

601 名前:login:Penguin mailto:sage [2008/02/10(日) 18:47:08 ID:rgXsI3qI]
gdbで引っ掛けてどこで死ぬかを見極めるべし
まあメモリ破壊の類だとは思うが

602 名前:login:Penguin mailto:sage [2008/02/10(日) 20:52:25 ID:+TLKCHqg]
>>600
メモリ破壊だったら、Electric Fenceが便利かもね。

603 名前:login:Penguin mailto:sage [2008/02/10(日) 20:55:13 ID:qj0nK6Tb]
valgrindのほうが。



604 名前:login:Penguin mailto:sage [2008/02/10(日) 23:03:17 ID:W61q/SHI]
自分に強壮剤がいいよ

605 名前:login:Penguin mailto:sage [2008/02/11(月) 12:45:49 ID:0peP2Ab+]
>>601-603
ありがとう
ドリンク飲んでがんばります

606 名前:login:Penguin [2008/02/11(月) 20:57:09 ID:JHZIo94H]
>>600
エラー処理をしているのかと子一時間

NULLが帰ってきたら、どうしてるの?

607 名前:login:Penguin mailto:sage [2008/02/11(月) 20:59:54 ID:NXuZoz9l]
実際mallocでNULL返ってくるの? CoWなのに。

608 名前:login:Penguin mailto:sage [2008/02/11(月) 21:58:06 ID:g58d+k53]
>>607
CoWは関係ないような。

というのはともかく、極端に大きなmallocならNULLが戻るよ。
搭載メモリ量とか、32bit/64bitにもよるかもしれないけど、malloc(1*1024*1024*1024)とか。

609 名前:login:Penguin mailto:sage [2008/02/11(月) 22:59:43 ID:v7vkIa+N]
>>607
物理ページ自体は必要ないが、メモリ空間が足りなくなる可能性はある
x86 (32bit) だと、ユーザ空間が3GB・カーネル空間が1GBで分けられてたはずだから、
多分2.5GB確保は成功して、3GB確保は失敗すると思う

610 名前:login:Penguin mailto:sage [2008/02/11(月) 23:27:43 ID:g58d+k53]
>>609
適当なプロセスをcat /proc/pid/mapsしてみればわかるけど、.soやらなにやらが3GBのそこかしこにmapされてしまっているから、
2.5GB連続で仮想メモリ確保ってのは難しいと思うよ。

例えばfirefoxあたりだと色々mmapされすぎていて全く無理ですね。

611 名前:login:Penguin mailto:sage [2008/02/11(月) 23:49:20 ID:H5r6W4j2]
>>606
>>600は「値が帰ってくる前に」と言ってるんだから、NULLが帰ってくるも
ヘッタクレもないと思うんだが。
当然、返り値をチェックしようとしているけど、帰ってくる前にSIGSEGVなんだろ。

612 名前:login:Penguin mailto:sage [2008/02/12(火) 21:41:58 ID:i/htmIMa]
ファイルAとBが同一パーティション上にあるかどうかLinux的にはどうやって判断すればいいんでしょうか

613 名前:login:Penguin mailto:sage [2008/02/12(火) 23:16:42 ID:6Xg+LWoP]
パーティションよりファイルシステムの場所を調べる方が汎用性があって
尚且つ簡単そうで良さげ。スクリプトでやっつけるならdfにパスを食わせて
出たファイルシステムを比較すれば一丁上がり、、、かなぁ。

どうしてもパーティション、という場合は知らん。



614 名前:login:Penguin mailto:sage [2008/02/12(火) 23:25:33 ID:vZRSZKGy]
今Linuxが手元にないんだけど、レギュラーファイルに対してstat(2)すると
struct stat::st_devってどうなるんだっけ?

615 名前:login:Penguin mailto:sage [2008/02/12(火) 23:36:11 ID:i/htmIMa]
>>613
ありがとうございます。mtab読みに行くことにしました。

616 名前:login:Penguin mailto:sage [2008/02/12(火) 23:48:38 ID:943cnSqV]
>>614
vmware+Linux入れなよ

617 名前:login:Penguin mailto:sage [2008/02/13(水) 00:42:27 ID:XbwK8Zpg]
>>614
普通はそれだと思う

618 名前:614 mailto:sage [2008/02/13(水) 01:03:45 ID:eUvEe13x]
>>617
汲み取ってくれて、ありがとう。

619 名前:login:Penguin mailto:sage [2008/02/13(水) 07:33:31 ID:pBknmnOU]
結局、パーティションまでは分からんということだな。

620 名前:login:Penguin mailto:sage [2008/02/13(水) 07:47:41 ID:hT3T8ff2]
>>619
>>614にあるのじゃどうしてだめなの?


621 名前:login:Penguin mailto:sage [2008/02/13(水) 11:59:04 ID:G1ltJVUD]
HTTPクライアントを作ろうと思いますが、
自分の空きポートはどうやったら取得できますか?

622 名前:login:Penguin mailto:sage [2008/02/13(水) 12:14:39 ID:5QyCkyQ9]
>>621
HTTPクライアントならサーバの80につなげば
いいだけじゃない?空きポートを知る必要が
わからん。(connect()で80につなげばいいだけ。)
クライアントの使用するポートはプロトコルスタックが
空いているポートを適当に割り振ってくれる。

623 名前:621 mailto:sage [2008/02/13(水) 12:23:24 ID:G1ltJVUD]
>>622
あっ、そーですか。有難う。

httpで相手のポート80に接続して、writeするだけですね。
(tcpと大して変わらないのかって、tcpで接続するプログラム書いたことないけど)






関係ないけど、それらがC/C++のクラスライブラリになってたりしませんよね?



624 名前:login:Penguin mailto:sage [2008/02/13(水) 12:25:48 ID:YOhJXxZI]
>>623
curl
と言いたいけど、お前にはsystem("wget wwwwwwwww");で充分だ。

625 名前:login:Penguin mailto:sage [2008/02/13(水) 13:21:11 ID:hYkhPPAJ]
>>623
TCP 以外の何でアクセスするつもりなんだ?

626 名前:login:Penguin mailto:sage [2008/02/13(水) 18:02:37 ID:G1ltJVUD]
>>625
HTTP


ところで、HTTPエンコードする標準メソッドなんてありますか?

627 名前:login:Penguin [2008/02/13(水) 18:20:50 ID:G1ltJVUD]
知りたいのは、HTTP エンコードじゃなくて、URL エンコードでしたorz

628 名前:login:Penguin mailto:sage [2008/02/13(水) 19:29:27 ID:Mx9E0jHA]
>>626
HTTPってTCPじゃね?

629 名前:login:Penguin mailto:sage [2008/02/13(水) 19:59:54 ID:JBOJRmRv]
>>626を見ると、>>624は正しかったんだな、と思った。

630 名前:login:Penguin mailto:sage [2008/02/13(水) 20:54:09 ID:eUvEe13x]
>>628
あらゆる意味で違うと、いちおう突っ込んでおけばいいかな?

631 名前:login:Penguin mailto:sage [2008/02/13(水) 21:03:49 ID:N8sc8JVE]
>>628
TCPってIPじゃね?
以降物理層まで続く↓

632 名前:正義の味方 [2008/02/13(水) 23:20:51 ID:5UuGIiF+]
地球を救う正義の味方、今こそ参上!!
seiginomikata.xxxxxxxx.jp/

633 名前:login:Penguin mailto:sage [2008/02/14(木) 01:22:24 ID:AMxoEq8N]
>>624 そんなあなたに ttp://www.blue.sky.or.jp/grass/doc_ja.html




634 名前:login:Penguin mailto:sage [2008/02/14(木) 05:16:55 ID:vPDIK5xn]
HTTP on TCP on IP on Ethernet

635 名前:login:Penguin mailto:sage [2008/02/14(木) 10:46:16 ID:yt/o7Lpq]
UDPはTCPじゃないおねw

636 名前:login:Penguin mailto:sage [2008/02/22(金) 11:00:23 ID:G/AgynaC]
自分が開いているファイルポインタを監視して,
ほかのプロセスから見られているかどうかをチェックする方法ってありますかね?

637 名前:login:Penguin mailto:sage [2008/02/23(土) 18:26:40 ID:fMtbJMPF]
inotify...でできたようなできなかったような。

638 名前:login:Penguin [2008/02/24(日) 23:17:29 ID:BrtZUi2N]
streaming.linux-magazin.de/en/program_fosdem.htm
cmakeについてのリアルタイム講演が聞けるそうな

639 名前:login:Penguin mailto:sage [2008/02/25(月) 17:29:44 ID:gh7YVSGk]
gdbってスレッドの中まで追跡してくれないよね?
今開発しているプログラムが生成したスレッドの中で何かおかしなことを
やってるみたいなのだが再現性が100%にならず困っている.
gdbでlistとかやっても表示されるのはスレッドを生成してる
関数のところが表示される.
せめてどこで落ちてるのか分かればいいんだが...

640 名前:login:Penguin mailto:sage [2008/02/25(月) 17:56:48 ID:cSNR/6sC]
マルチコア環境上で、指定したスレッドを実行しているCPU番号を取得する
方法はないでしょうか?

ちょうど、RTLinuxでいうrtl_getcpuid()のようなものを探しています。

# sched_setaffinity() を利用したCPU括り付けでのマルチスレッドの動作確認を
 しようと思っています。

641 名前:login:Penguin mailto:sage [2008/02/25(月) 18:39:00 ID:/pUYRVYK]
info threads
thread thread_no

642 名前:login:Penguin mailto:sage [2008/02/26(火) 22:09:55 ID:Gzm7dZQg]
>>640
CPU番号を取得するのがカーネル空間なのかユーザ空間なのかで違う。
カーネル空間ならthread_infoのcpuを読めばいい。
ユーザ空間ならthread_infoのcpuを読むようなカーネルモジュールを作って
システムコールで呼ぶしかない。ただ、システムコールのためにカーネル空間に入って
戻ってきたときには別のCPUに切り替えられているかもしれないので使い物にならない。



643 名前:login:Penguin mailto:sage [2008/02/26(火) 22:12:32 ID:Gzm7dZQg]
>>636
fuserでも呼べば?



644 名前:login:Penguin [2008/02/27(水) 01:24:58 ID:YHDpNSRs]
>>639
スレッドの本を読んで勉強するほうが早い

645 名前:login:Penguin mailto:sage [2008/02/27(水) 02:36:14 ID:s4UfhcJi]
>>639
>>641のコマンドをgdbで実行すれば追跡できるけど?
gdbはVer.5辺りからスレッドに対応してるよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef