• 締切済み

物理ブロック番号でのブロック読み出し方法

ユーザプロセスから、物理ブロック番号によるファイルのブロック読み出し/書き出しする方法を知りたいのですが。

みんなの回答

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.2

OSによるので、OSのカテゴリで質問してください。 Unix/Linuxだと、ディスク全体とか、あるパーティション全体とかが、仮想ファイルとして扱えるので多分楽。バイト位置でのアクセスになるので、物理ブロックサイズを調べて、ブロック番号をバイト位置に変換して、root権限でlseekしてreadすればいい。

north111
質問者

お礼

ネットできない環境にいてお礼遅くなりました。確かに言葉足らずでした。 ファイルシステムの勉強かねて、ext2/3のext_inodeの論理ブロック(?)から物理ブロックはioctlでなんか取得できそうで、そのファイルシステム上のブロック番号を直接readすることで、ファイルの読み込みを実現できないものか。と思ったしだいです。 int get_blocks(int fd, int nr) { ioctl (fd, FIBMAP, &nr); return nr; } int get_nr_blocks (int fd) { struct stat buf; fstat (fd, &buf); return buf.st_blocks*512/buf.st_blksize; } void disp_blocks(int fd, int nr) { int i, phys_block; for (i = 0; i < nr; i++) { phys_block = get_blocks(fd, i); printf("%d,%d\n", i, phys_block); if (!phys_block) { nr++; } } } int main (int argc, char *argv[]) { int fd, nr; fd = open (argv[1], O_RDONLY); nr = get_nr_blocks (fd); disp_blocks(fd, nr); }

回答No.1

意味が分からない。 本当にC言語の質問なのだろうか? 特殊な環境に依存する読み書きに関する事項なのか?

north111
質問者

お礼

ネットできない環境にいてお礼遅くなりました。確かに言葉足らずでした。linux環境下でのことなのですが・・・。

関連するQ&A

  • 自分のブロックしたユーザーを調べる方法はありますか?

    自分のブロックしたユーザーを調べる方法はありますか? お気に入りユーザーよりもブロックユーザーの機能を使います。 退会→再加入後も捉まりたくないユーザーがいるので、今まで自分がブロックしたユーザーを知りたいのです。 方法はありますでしょうか? また、ブロックユーザーは何人まで登録できるのでしょうか?

  • linuxで、物理ディスクのブロックサイズの確認方法

    linuxで、物理ディスクのブロックサイズを確認する方法が分かりません。 どなたかご存知の方がいれば、教えてください。

  • ブロックリストの設定方法

    ブロックリストの設定方法 教えてgooを使っていますが、 ブロックユーザーの設定方法がわかりません。 ログイン→マイページ→設定→ブロックリスト とここまでくると、「ブロックユーザーはありません。」という表示がでますが どうやって設定すればいいのでしょうか。

  • [ブロック解除]の方法が知りたいです!

    ブロックされたファイルを開く方法が知りたいのです。 ファイルが安全であることがわかっている場合に そのファイルを開く方法は・・・ 保存したファイルを右クリックし、[プロパティ] をクリック→ダイアログ ボックスの下部にある [ブロックの解除] をクリック 以上が手順なのでしょうが、私のダイアログボックスには、 [ブロックの解除]自体のボタンがないのです。 どうすれば[ブロックの解除ボタン]が出てきますか? どなたかおわかりでしたらよろしくお願いいたします。

  • ブロックされているか

    ユーザからブロックされているかを知りたい場合、どうすればよろしいですか? 教えてgooを利用しております。 最も簡単な方法でお願いします。

  • ブロックユーザー

    このサイトでは、いやな奴をブロックできるらしいですけど、 僕をブロックしてる奴を、 すぐにわかる方法はありますか。 何か印のようなものがついていますか。 僕は基本的にはいやな奴だからと言ってブロックするのは間違っていると思うので、 ブロックユーザーがいません。 ので、ブロックするとどうなるのかよくわかりません。 何かわかりやすい目印や、方法がわかればありがたいので、 教えてください。

  • ブロック

    ブロックしたいユーザーがいます。でもタッチ出来ない様に固定してあります。ブロックユーザーに登録するにはどうしたらいいですか?

  • プロセス?ブロック?

    職場でC, C++で開発を行っているのですが、 最近、技術ミーティングなどで「プロセス」とか「プロセスをブロック」など の言葉を聞き、意味が良く分からず困っています。 OSのプロセススケジューリングによりブロックが起こるというような 基本的なことは分かっていますが、それをどのようにプログラミングで実装してよいのかが分かりません。 概要だけでしたらlinuxカーネルなどの基礎があればよいと思うのですが、 プログラミングで実践的にプロセスの扱い、プロセスとはこういうものだ!ということを学べる書物がありましたら教えてください。 具体的な書物でなくても、「マルチスレッドの本」というアドバイスでも結構です。 よろしくおねがいします。

  • お願いします。物理を学べる方法なんとか教えてもらえないでしょうか

    お願いします。物理を学べる方法なんとか教えてもらえないでしょうか 僕は文系の浪人生です。物理を学びたくて仕方ないんですが、今更理転とかリスク高すぎですし。親がそれを許してくれません。しかし、物理を学びたいっていう気持ちがいつもあります。そこで、文系の大学に行っても物理を学べる方法はないでしょうか? 独学でするのは相当難しい、というか無理らしいので、講義を聞けるところがあれば教えて欲しいです。(出来れば夜間) 物理学に惹かれながらも、ただ見ているだけしかない自分が悔しいです。

  • ブロックされたら、知らせてほしいですか?

    こんにちは^^ OKWAVEの他のユーザーにあなたがブロックされたら        olympigさんにブロックされました みたいな通知をして欲しいですか? 欲しくないですか?

専門家に質問してみよう