![キャラクターデバイスファイルの内容を見る[重複]](https://linux33.com/image/55035/%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%82%92%E8%A6%8B%E3%82%8B%5B%E9%87%8D%E8%A4%87%5D.png)
/dev/sda
cat
16進エディタを使用するのと同じように、ブロックデバイスファイルの内容を表示できるのはなぜですか?なぜこのようなキャラクターデバイスでは同じことができないのですか/dev/pts/3
?
答え1
Unixのデバイスはファイルに似ていますが、同じではありません。一部のデバイスでは、デバイスソフトウェアの実装者が読み書きするのがより適切であるが、他のデバイスについては、どちらか一方のみを実装する方が合理的である。
キャラクターデバイスといって読めないわけではありませんが/dev/pts/3
、読める他の機器もあります。そのpts
デバイスの場合、読み直すことは、文字をscreenwidth*screenheight
長さの線形配列に画面から取り戻すことを意味しますが、それほど有用でも効率的でもないことがわかります。
年齢が少し多いですが、Linuxデバイスドライバ、第3章トピックの興味深い読書です。
答え2
これは(必ずしもそうではない)文字デバイスとブロックデバイスの違いです。たとえば、確実に使用できる/dev/urandom
キャラクターデバイスです。cat
あなたの場合は/dev/sda
すでに存在するストレージを参照しているので、それを読むと既存のストレージを読みます。ただし、/dev/pts/3
これは擬似端末であり、次の入力文字が準備されるまでデータの読み取りがブロック(待機)されます。
別の違いは次のとおりです。探す永続ストレージへのアクセスを提供するデバイスの特定の場所に移動しますが、端末では見つかりません。
答え3
これその/dev/pts/3
目的とそれによって何ができるかを説明します。/dev/sda
読み書き可能なHDD/SSDを指します。でデータを編集すると、/dev/sda
必ずパーティションではなくドライブに直接書き込まれます。これによりパーティションが破損する可能性があるため、通常はデータの保存には使用されません。ただし、ディスクに直接書き込むのが便利な場合があります(dd
ディスクを安全に消去したい場合など)。 Unixでは、すべてがファイルですが、すべてのファイルを読み書きすることはできません。