No.2
- 回答日時:
たとえば、LANボードの場合、
ソケットなどを使うと、ポートという仮想的な接続点を相手にすることで通信ができる。LAN上を流れるデータから指定されたポートに向けられたデータを取り出し、プログラムに渡すまたは、データが来るまで待機するということもしてくれる。
デバイスファイルを使うと、LAN上を流れるすべてのデータを読み取ることができるが、データを解析し何のデータなのかを判断したり、扱いやすい形にするのはプログラムの仕事になる。また、相手のシステムが理解できるようにデータを作成するのはすべてプログラム側の仕事になる。つまり、デバイスファイルではデータをLANボードに渡すくらいしかしてくれない。
という感じでは?
どうもありがとうございます。
なんとなくわかりました。
お暇であればもう少しお願いしたいのですが、
例えばopen()すると、データを送受信できる状態になりますが、これは物理的にどういう状態なんでしょうか?
またwrite()で"ABC"というデータをあるデバイスファイルに書き込んだ場合、そのデバイスのポートに"ABC"が書き込まれると解釈して良いのでしょうか?
お暇でしたらお願いします。
No.3
- 回答日時:
Linuxには仮想ファイルシステム(VFS)という仕組みがある。
ユーザアプリから見た場合、通常ファイル・デバイスファイルの
違いを意識せず、open/read/write/closeなど同じ関数が使える。
これは、VFSが違いを隠蔽してくれている為である。
VFSは、デバイスファイルへのシステムコール(open/read/write/close)を
ファイルシステムに対応する関数ではなく、そのデバイスファイルに対応
するデバイス用の関数の呼び出しへと置き換えてくれる。
ハードウェアへのI/O操作・データ入出力は、当然ハードウェア毎に異なるが、
VFS+デバイスファイル(デバイスドライバ)が違いを吸収してくれるので、
ユーザアプリ(およびカーネル)からは、open/read/write/close
で通常ファイルと同様にハードウェアを扱えるわけ。
No.4
- 回答日時:
>>何を聞きたいのでしょうか?
>どうもありがとうございます。
これでは、私の質問の答えになっていませんよ。
#2さんのソケットのオープンはopen()でできますか?
また、ファイルシステムのファイルのopen()は普通のファイルのオープンです。
もっと質問の意図を明確にしてくださいといっているのですが...
デバイス、例えば/dev/fd0 をオープンするということは
FDデバイスを1つのファイルのようにオープンすることです。
これに先頭から書き込みをすると、FDの先頭セクタから書込みされます。
どうもありがとうございます。
>質問の意図を明確にしてくださいといっているのですが...
読み書きについてはわかりましたが、open(devname,...)
とした場合コンピューター内部で物理的にどういう状況になったのかが知りたいです。
(普通のファイルであればメモリにファイルがロードされると読んだことがありますがデバイスファイルの場合はどうなんでしょうか?)
No.6
- 回答日時:
こちらの方が良かったでしょうか?
細部については確認していませんが。
http://japan.linux.com/kernel/internal22/node166 …
参考URL:http://japan.linux.com/kernel/internal22/node166 …
No.7ベストアンサー
- 回答日時:
デバイスドライバというカーネルに組み込まれるソフトウェアをご存知でしょうか?
open()をコールすると、デバイスドライバのopenエントリに制御が渡されます。デイバスドライバは、
・あぁ、だれかさんからオープンされたね、とだけ覚えてリターンすることもありますし、
・次のコールされるであろうreadやwriteあるいはioctlに備えて、自身が制御するデバイスを制御して準備をしたあと、リターンすることもあります。
read()/write()でも同様に、デバイスドライバの該当するエントリに制御が渡されます。
この場合は間違いなくデバイスを制御します。
デバイスを制御するということは...
興味がおありでしたら、別スレッドででも聞いてください。
参考まで。
どうもありがとうございます。
雰囲気はわかりました。
後はopen()やread()のソースコードを解読するのがてっとり早そうなのでそちらでがんばってみます。
機会があればまた質問したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育・文化 読み書きできない世代について 9 2022/11/11 13:17
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- 物理学 読書中泣きそうになる ・頭がみんなよりよくない(得意なこともあるし、鬱病や適応障害がお勉強の邪魔にな 2 2022/07/29 19:11
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- 高校 最近考えついた勉強方法についてご意見をいただきたいです。 私は文系の高校生で、将来英語を使った職に就 1 2023/02/04 21:28
- ドライブ・ストレージ HDDのチェック方法 6 2022/05/04 09:49
- 高校 読書が止められなくて困っています。 女子高生です。私は昔から本が大好きで、幼い頃は絵本、そして童話。 7 2022/06/05 22:16
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- 大学受験 身長187cmです。 大学受験で南極老人という人の勉強方法が書かれた本を買いました。ミスターステップ 3 2022/08/02 20:49
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッファとは何ですか
-
【python】Excelファイルを読み...
-
Microsoft VBAで2GBを超えるフ...
-
ページ読み込み時に自動的にsub...
-
エンディアンと2の補数表現
-
バイナリ表示されたデータを小...
-
EXCEL VBAでテキストファイルの...
-
VBA バイナリ―から文字列にす...
-
入力ファイルをバイナリにする利点
-
VB2010 COMポートからのバイナ...
-
EOF
-
バイナリを16進数で表示したい
-
C言語とシリアル通信の送受信...
-
エクセルVBA 2千万行のCSVファ...
-
JPGのwidhtとheight
-
ワードプレスhtmlファイルの保...
-
コンピュータ系にはめっぽう弱...
-
ゲームのパラメータの読み込み...
-
3gp、mp4のファイル情報取得
-
fwriteでの書き込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
ページ読み込み時に自動的にsub...
-
エクセルVBA 2千万行のCSVファ...
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
入力ファイルをバイナリにする利点
-
バイナリエディタのつかいかた
-
MacからWinにファイルを添付す...
-
EOF
-
【python】Excelファイルを読み...
-
C言語の質問です。バイナリ形...
-
画像の保存方法。
-
テキストデータをSQLServerに取...
-
バイナリファイルの比較につい...
-
bitmap画像の保存がうまくいき...
-
なぜデータの整合性を確認する...
-
C言語とシリアル通信の送受信...
-
【Teraterm】filewritelnについて
おすすめ情報