testのマニュアルを見ていたら、見たことのないファイル形式がいっぱい出てきてびっくりしました。
通常のファイル、ディレクトリ、シンボリックリンクの3種類は知っていたのですが、他は全部知りませんでした。それぞれどういうファイルなのか教えてください。
次のファイルの意味を教えてください。
ブロックスペシャルファイル(B)
キャラクタスペシャルファイル(C)
名前付きパイプ(P)
ソケット(S)
あと、最後に-t[fd]というオプションがあったのですが、この-tもファイルの形式を評価するオプションなのでしょうか。
詳しい方、ご返答お願いします。
No.2ベストアンサー
- 回答日時:
間違いがあったら遠慮無く訂正してください。
>ブロックスペシャルファイル(B)
>キャラクタスペシャルファイル(C)
UNIXにおいて入出力装置も含めて全てファイルとして扱っており、装置のインタフェース用の特殊なファイルがスペシャルファイルと言います。
装置特性としてブロック単位でアクセスするような装置がブロック型デバイス、それ以外の装置のキャラクタ単位でアクセスするような装置をキャラクタ型デバイス(raw deviceとも言う)と言いい、それぞれのデバイスのインタフェースがブロック型スペシャルファイル、キャラクタ型スペシャルファイルになります。
入出力の違いですが、ブロック型スペシャルファイルを通してのアクセスはバッファリングされ、キャラクタ型スペシャルファイルを通してのアクセスはバッファリングされません。
>名前付きパイプ(P)
UNIX系OSにおいてプログラム間でデータを受け渡すための機能としてパイプというものがあります。
例が悪いかもしれませんが、あるディレクトリ配下にファイル名にpipeを含むファイルを探す場合、例えば
# find . -type f -print | grep "pipe"
のように実行した場合、findコマンドの出力結果をgrepコマンドが受け取るために"|"を指定すると思いますが、これがパイプ(名前なしパイプ)です。
プロセス間通信(複数のプロセスでデータをやりとりする仕組み)で使用するためにパイプが拡張されたものが名前付きパイプです。
名前付きパイプを用いることで普通にファイルに書き込んだり読み込んだりするのと同じ感覚で利用出来ます。
名前付きパイプの作成はライブラリ関数とコマンドから作成出来ます。
コマンドで作成する場合は、mkfifoコマンドを使用します。
>ソケット(S)
これもプロセス間通信の一手法で、TCP/IPで通信する際にはこのソケットが使用されます。
このソケットにも2種類ありまして、TCP/IPで他ホストと接続するためのインターネットドメインソケットと同一マシン上で接続ためのUNIXドメインソケットというものがあります。
このUNIXドメインソケットは特殊なファイルを作成して通信を行います。
testコマンドで言うソケットはUNIXドメインソケットで使用するファイルの方だと思います。
>-t[fd]
UNIX系OSでは、ファイルをオープンすると必ず識別するための番号が付与されます。
複数のファイルをオープンしていてもこの番号を使用するれば意図したファイルに対して入出力を行える事が出来ます。
この識別するための番号をファイルディスクリプタ(fd)す。
プロセスが起動するとファイルディスクリプタの0~1には決まったものが割り付けられています(プログラム内で変更は可能)。
それは、0が標準入力、1が標準出力、2が標準エラー出力です。
指定したファイルディスクリプタがオープンされているか、つまりファイルに割り当たっているかを調べるものだと思います。
この回答への補足
/dev内にブロックスペシャルファイル、キャラクタスペシャルファイルを多数発見しました。
これよりdevとは恐らくdevice(装置)のことで
/devは外部装置とのインターフェース用のファイルが保存されているディレクトリーなのだということを理解しました。
Leanさん、ご返信ありがとうございます。
謎は全て解けました!
と言いたいところですが、ていねいな説明をいただいても、なおちんぷんかんな部分が残ります。
ひとつ分かったことは、これらのファイルタイプを使用するときまでは、あまり深く考えるなということです。
ブロックスペシャルファイル、キャラクタスペシャルファイルについてはフロッピーなど外部の装置をあたかも普通のファイルのように読み書きするために用意されたファイルということでしょうか。
名前付きパイプとソケットの解説は、まだ今の私には理解できませんでした。
ゆくゆくこのようなファイルタイプを使用する場面が出てくるまでは、これ以上追求せず、このようなファイルタイプがあるという認識程度にとどめておくことにします。
一生使わないかも知れませんが・・・。
-t[fd]の説明はよく分かりました。
fdとはてっきりフロッピーディスクのことだと思いこんでいたのですが、ファイルディスクリプターを指していたのですね。
test -tで0、1、2を確認したところ、すべて真を返しました。
これは、標準入力、標準出力、標準エラーが全てオープンしているということが確認できたということですよね。
test -t 3を試したところ偽が返ってきました。
3以上のファイルディスクリプターをどうやって割り当てるかは忘れてしまいましたが、
これでファイルディスクリプター3がクローズしているということが確認できました。
No.4
- 回答日時:
>この名前無しパイプと名前付きパイプの違いが私にはよく分かりませんでした。
あるプロセスから新たにプロセスが生成された場合、プロセスを生成したプロセスと生成されたプロセスは親子関係にあり前者が親プロセス、後者が子プロセスと言われます。
名前なしパイプは親子プロセス間でしかつなげられませんが、名前付きパイプは親子関係にない別々のプロセス間でもつなげられます。
Leanさん、ご返信ありがとうございます。
名前なしパイプでできることは、名前付きパイプでも全てでき、かつ名前付きパイプは親子間以外の通信もできるということですね。
なので名前付きパイプは名前なしパイプの拡張版的位置づけですね。
私は、親子関係というのは子が親の環境を受け継いでおり、しかも子の変更は親に影響しないという認識を持っています。
親子関係にない別々のプロセスというのは、環境が全く異なり、しかも相互に干渉しないプロセスという感じでしょうか。
多分、名前なしパイプでは対応できず、名前付きパイプを利用すべき場面があるのでしょうが・・・うーーん難しい!
もっといっぱい経験を積もうと思います。
今は、指定した2つのディレクトリー内の相違点を表示するスクリプト(本に載ってるやつ)を改良しています。
指定するディレクトリーによってはbashやfindがエラーメッセージを表示して格好悪いので、これを直そうとしています!
No.3
- 回答日時:
>ブロックスペシャルファイル、キャラクタスペシャルファイルについてはフロッピーなど外部の装置をあたかも普通のファイルのように読み書きするために用意されたファイルということでしょうか。
そうです、装置も普通のファイルと同じような位置づけにしているわけです。
ただ、実際問題としては一般ユーザにはパーミッションがなかったりするはずなので直接アクセスは出来ないとは思いますが。
>名前付きパイプとソケットの解説は、まだ今の私には理解できませんでした。
異なるプログラム(プロセス)間で情報のやりとりを行うようなプログラムを作成するとかなら使うことがあるかもしれませんが、デスクトップとして使用している分には意識する必要はないかとは思います。
Leanさん、再返信ありがとうございます。
なるほど、スペシャルファイルとはその名のとおり、管理者のみ操作可能な特殊ファイルなのですね。
そういえば、フロッピーを読み書きするためには、あらかじめマウント操作が必要であり、一般ユーザーでそれを行おうとしたら怒られたのでした。
ユニックスは当初、各所の端末装置からホストに接続する使用形態を想定していたので、マウント操作は管理者だけに許可しておけば不自由なかったのだと思います。
普段、頻繁に使用するパイプは、実は、名前無しパイプという別名があることも初めて知りました。
この名前無しパイプと名前付きパイプの違いが私にはよく分かりませんでした。
あるプロセスの出力を、パイプを介して別のプロセスへの入力とするということは、まさにプロセス間の通信ですので、
名前付きパイプやソケットというのは、このパイプの機能がもっと拡張されたものなのだろうと予想しています。
いずれ実際に使用してみれば謎が解けると思います。
No.1
- 回答日時:
FoggyMountainさん、ご返信ありがとうございます。
お教えいただいたページはリナックスの半公式サイトのようなものでしょうか。
リナックスに関するあらゆる情報が掲載されているので、端から読んでいけば、やがてリナックスマスターになれますね!
ひとまずお気に入りに登録しました。
この膨大な情報の中から、ブロックスペシャルファイルとは何ぞやという情報を探してみたのですが、見つかりませんでした。
そのような常識な単語の説明は掲載されていないのか、はたまた私の検索の仕方が下手なのか、恐らく後者でしょうが、
このサイトには、これからちょくちょく寄ろうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) ドキュメントに保存していたエクセルのファイルが開きません。 2 2022/12/02 09:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/10/03 09:55
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedriveの中身を削除したらパ...
-
mrl→midファイルへ
-
macのdmgファイル(動画)をMP4...
-
Winmerge ファイルの中身は同じ...
-
MGRファイルは消して良いのか
-
office365 ファイルを削除したい
-
クラリスワークスのファイルを...
-
コマンドプロンプトによるフォ...
-
Excellにて→ファイルエラー:デ...
-
ファイルの単位
-
同期センターのマークが出てま...
-
バッチファイルで変数の中身を...
-
Windows10 フォルダ内の自動並...
-
outlookuの添付ファイルが開け...
-
BAKファイルを非表示にする方法
-
Windows11 でのファイル削除
-
ファイル操作(削除など…)の履...
-
フォルダ内の一覧を印刷するには?
-
ファイルソートができるMac用フ...
-
WMP12のトラック番号編集...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
onedriveの中身を削除したらパ...
-
同期センターのマークが出てま...
-
バッチファイルで変数の中身を...
-
コマンドプロンプトによるフォ...
-
Windows10 フォルダ内の自動並...
-
教えてください!困ってます。
-
ファイルの先頭行を全て削除したい
-
emlをtxtに変換するには?
-
ファイルの単位
-
Windows11 でのファイル削除
-
クラリスワークスのファイルを...
-
Excellにて→ファイルエラー:デ...
-
office365 ファイルを削除したい
-
macのdmgファイル(動画)をMP4...
-
mac ファイルの詳細情報を編集...
-
ファイル操作(削除など…)の履...
-
linuxのエディタgeditは複数フ...
-
BAKファイルを非表示にする方法
-
mac 表示できなくなりました。
おすすめ情報