• ベストアンサー

ファイルタイプの意味を教えてください

testのマニュアルを見ていたら、見たことのないファイル形式がいっぱい出てきてびっくりしました。 通常のファイル、ディレクトリ、シンボリックリンクの3種類は知っていたのですが、他は全部知りませんでした。それぞれどういうファイルなのか教えてください。 次のファイルの意味を教えてください。 ブロックスペシャルファイル(B) キャラクタスペシャルファイル(C) 名前付きパイプ(P) ソケット(S) あと、最後に-t[fd]というオプションがあったのですが、この-tもファイルの形式を評価するオプションなのでしょうか。 詳しい方、ご返答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答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が標準エラー出力です。 指定したファイルディスクリプタがオープンされているか、つまりファイルに割り当たっているかを調べるものだと思います。

zyousuke
質問者

お礼

Leanさん、ご返信ありがとうございます。 謎は全て解けました! と言いたいところですが、ていねいな説明をいただいても、なおちんぷんかんな部分が残ります。 ひとつ分かったことは、これらのファイルタイプを使用するときまでは、あまり深く考えるなということです。 ブロックスペシャルファイル、キャラクタスペシャルファイルについてはフロッピーなど外部の装置をあたかも普通のファイルのように読み書きするために用意されたファイルということでしょうか。 名前付きパイプとソケットの解説は、まだ今の私には理解できませんでした。 ゆくゆくこのようなファイルタイプを使用する場面が出てくるまでは、これ以上追求せず、このようなファイルタイプがあるという認識程度にとどめておくことにします。 一生使わないかも知れませんが・・・。 -t[fd]の説明はよく分かりました。 fdとはてっきりフロッピーディスクのことだと思いこんでいたのですが、ファイルディスクリプターを指していたのですね。 test -tで0、1、2を確認したところ、すべて真を返しました。 これは、標準入力、標準出力、標準エラーが全てオープンしているということが確認できたということですよね。 test -t 3を試したところ偽が返ってきました。 3以上のファイルディスクリプターをどうやって割り当てるかは忘れてしまいましたが、 これでファイルディスクリプター3がクローズしているということが確認できました。

zyousuke
質問者

補足

/dev内にブロックスペシャルファイル、キャラクタスペシャルファイルを多数発見しました。 これよりdevとは恐らくdevice(装置)のことで /devは外部装置とのインターフェース用のファイルが保存されているディレクトリーなのだということを理解しました。

その他の回答 (3)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

>この名前無しパイプと名前付きパイプの違いが私にはよく分かりませんでした。 あるプロセスから新たにプロセスが生成された場合、プロセスを生成したプロセスと生成されたプロセスは親子関係にあり前者が親プロセス、後者が子プロセスと言われます。 名前なしパイプは親子プロセス間でしかつなげられませんが、名前付きパイプは親子関係にない別々のプロセス間でもつなげられます。

zyousuke
質問者

お礼

Leanさん、ご返信ありがとうございます。 名前なしパイプでできることは、名前付きパイプでも全てでき、かつ名前付きパイプは親子間以外の通信もできるということですね。 なので名前付きパイプは名前なしパイプの拡張版的位置づけですね。 私は、親子関係というのは子が親の環境を受け継いでおり、しかも子の変更は親に影響しないという認識を持っています。 親子関係にない別々のプロセスというのは、環境が全く異なり、しかも相互に干渉しないプロセスという感じでしょうか。 多分、名前なしパイプでは対応できず、名前付きパイプを利用すべき場面があるのでしょうが・・・うーーん難しい! もっといっぱい経験を積もうと思います。 今は、指定した2つのディレクトリー内の相違点を表示するスクリプト(本に載ってるやつ)を改良しています。 指定するディレクトリーによってはbashやfindがエラーメッセージを表示して格好悪いので、これを直そうとしています!

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

>ブロックスペシャルファイル、キャラクタスペシャルファイルについてはフロッピーなど外部の装置をあたかも普通のファイルのように読み書きするために用意されたファイルということでしょうか。 そうです、装置も普通のファイルと同じような位置づけにしているわけです。 ただ、実際問題としては一般ユーザにはパーミッションがなかったりするはずなので直接アクセスは出来ないとは思いますが。 >名前付きパイプとソケットの解説は、まだ今の私には理解できませんでした。 異なるプログラム(プロセス)間で情報のやりとりを行うようなプログラムを作成するとかなら使うことがあるかもしれませんが、デスクトップとして使用している分には意識する必要はないかとは思います。

zyousuke
質問者

お礼

Leanさん、再返信ありがとうございます。 なるほど、スペシャルファイルとはその名のとおり、管理者のみ操作可能な特殊ファイルなのですね。 そういえば、フロッピーを読み書きするためには、あらかじめマウント操作が必要であり、一般ユーザーでそれを行おうとしたら怒られたのでした。 ユニックスは当初、各所の端末装置からホストに接続する使用形態を想定していたので、マウント操作は管理者だけに許可しておけば不自由なかったのだと思います。 普段、頻繁に使用するパイプは、実は、名前無しパイプという別名があることも初めて知りました。 この名前無しパイプと名前付きパイプの違いが私にはよく分かりませんでした。 あるプロセスの出力を、パイプを介して別のプロセスへの入力とするということは、まさにプロセス間の通信ですので、 名前付きパイプやソケットというのは、このパイプの機能がもっと拡張されたものなのだろうと予想しています。 いずれ実際に使用してみれば謎が解けると思います。

回答No.1

>次のファイルの意味を教えてください。 http://www.linux.or.jp/JF/ ここで、検索すれば全てわかります。

zyousuke
質問者

お礼

FoggyMountainさん、ご返信ありがとうございます。 お教えいただいたページはリナックスの半公式サイトのようなものでしょうか。 リナックスに関するあらゆる情報が掲載されているので、端から読んでいけば、やがてリナックスマスターになれますね! ひとまずお気に入りに登録しました。 この膨大な情報の中から、ブロックスペシャルファイルとは何ぞやという情報を探してみたのですが、見つかりませんでした。 そのような常識な単語の説明は掲載されていないのか、はたまた私の検索の仕方が下手なのか、恐らく後者でしょうが、 このサイトには、これからちょくちょく寄ろうと思います。

関連するQ&A

  • リナックスの特殊ファイル「ソケット」を作成する方法はありますか

    以前リナックスのファイルタイプについてお聞きしました。 今、これらのファイルの作成方法をネットで調べたのですが、ソケットの作成方法だけは調べ切れませんでした。 ソケット以外は次のように調べられました。 普通のファイル: touchやecho + リダイレクション ディレクトリー: mkdir シンボリックリンク: ln -s 名前付きパイプ: mkfifo キャラクタスペシャルファイル、ブロックスペシャルファイル: mknod どのサイトにもこれらの説明は掲載されているのですが、なぜかソケットの作成方法が掲載されていません。 ひょっとしてソケットを作成するコマンドは存在しないのでしょうか。 詳しい方、教えてください。

  • スペシャルキャラクタファイルとスペシャルブロックファイルの意味は?

    「キャラクタスペシャルファイルは一文字単位で入出力を行い、ブロックスペシャルファイルはブロック単位でバッファリングを行う。」 という情報を見つけたのですが、さっぱり意味が分かりません。これら2つのファイルの意味を教えてください。

  • ファイルタイプのFIFOとソケットについて

    lsコマンドの-Fオプションの説明に以下のくだりがあります。 この中のFIFOとソケットについて理解していません。 このようなタイプのファイルはディレクトリ階層上どこにあるのでしょうか? また、これらのファイルタイプであることに何の意味があるのでしょうか? ファイル名にファイル・タイプを表す記号を付けて表示する。ディレクトリは/,実行可能ファイルは*,シンボリック・リンクは@,FIFOは|,ソケットは=で表わす

  • Linuxを使っていてCD-ROMのマウントができません

    Linux MLD4を使っていてCD-ROMのマウントができません。 コマンドを実行すると下記のようなメッセージが出ます。 #mount -t iso9660 /dev/cdrom/mnt/cdrom mount:invalid option --l Usage:mount [-hv] mount -a[-nfFrsvw] [-t vfstypes] mount [-nfrsuw][-o options] special | node mount [-nfrsvw][-t vfstype][-o options] special node A special device can be indicated by -[label or -U unid . [root@localhost /root]#df /cdrom df: /cdrom:No such file or directory Filesystem 1k-blocks Used Available Use% Mounted on 対処方法など分かる方がいましたら教えて下さい。

  • -のついたファイル名を操作するには…

    Sun OS 5.8を使用しています。不要なファイルを掃除しようとディレクトリー内を調べていると“-a"というファイル名のついたものが見つかりました。 内容を確かめようとcatやviコマンドで、ファイル名を-aとすると、シェルが-aを コマンドオプションと解釈していまい、うまく扱えません。このファイルの内容を見るにはどうしたらよろしいでしょうか?初歩的な質問で申し訳ありませんが、宜しくお願いします。ちなみにこのファイルはディレクトリーではありません。 一般のファイルで、私には読み書き実行の権限はあります。シェルはUnix標準のKshです。

  • GIMPでファイルが開けない

    すみませんが教えて下さい。 GIMPを使ってフォトレタッチに挑戦しようと思っているのですが、どうしてもデジカメ画像(jpeg)の開き方がわかりません。 ファイル→開く で画像読み込み画面が表れるのですが、ディレクトリやファイル、ファイル形式の決定などの項目をどう扱うのか、「選択」の下の空欄に何を入力するのか、さっぱりわかりません。 onlineのマニュアルもいくつか参考にしてみましたが、既存ファイルの開き方は(初歩的すぎて?)ほとんど触れられていません。 どうかよろしくお願いします。

  • ファイルシステム

    UNIX(Free BSDを使っています。)のファイルシステムとフィルターコマンドについての問題なのですが、解答がついていなく困っています。分かる限りの答えも書いておきますので、UNIX系に詳しい方、訂正、アドバイス、詳しい解答をお願いします。 問1: ディレクトリのリンク数はかならず2以上になる。その理由を記せ。 答: あるディレクトリの実体に対しては、少なくとも、 作成されたときについた名前と、自分自身を指す . という名前がついているので2以上になる。 問2: あるディレクトリのリンク数が5であったとする。そのディレクトリはどういう状態にあるか、簡単に記せ。 答: ディレクトリの中身は同じでも、異なる名前が3つつけられた状態。 問3: 1ブロックが512バイトからできているパーティションがあり、inodeリスト領域が100番のブロックから開始しているとする。  ここで、inodeリスト領域では、1ブロックに4つのinodeがあるとする。さて、ルートディレクトリのinodeは、このパーティション内の何番目のブロックにあるか記せ。 答: わかりません・・・。 問4: ユーザがコマンドを実行するとき、シェルを介在して実行されている。ェルを介在することによる利点を記せ。 答: シェルを介在することによって、パイプやリダイレクトなどが行なえるようになる。 どれも曖昧な答えにしかわからず困っています・・・。よろしくお願いします。

  • コンクリート壁へのハンガーパイプの設置

    いつもお世話になっています。 コンクリートの壁にクローゼットや押し入の中にあるようなハンガーを設置しようと考えています。 http://blog.livedoor.jp/yn_ie/archives/2011-06.html こちらの記事の6月16日の物のようにT字に配置する予定です。 パイプは太さ38ミリか30ミリで、巻きパイプまたはオールステンレスパイプ使用です。 壁間の長さは、1824~1825mmです 吊るすのは衣類なので全体の耐荷重は50~100kg程度を考えていますが、例えば70キロの人がぶら下がってもソケットが取れない位が望ましいです。 悩んでいる点は、 (1)ソケットの形状 3つもしくは4つのネジ穴が開いているよくある丸型のソケットにするか、こちら(http://unamu.cocolog-nifty.com/blog/2011/09/post-8fd3.html#more)のようなU字のにするか迷っています。 U字の方は上からパイプを入れるのでパイプ寸法をあまり気にしなくて良さそうですが、止めるネジ穴が1、2箇所なので、3、4か所留める丸のよりも強度が弱そうです。 丸の方は、パイプの寸法をいくつにしたらよいのかがよく分かりません。 実際の施工の仕方がよく分からないのですが、 両側に下穴を開けてから、まず一か所に丸ソケットを取り付けて、パイプのもう片方に丸ソケットを差し込み、壁に設置済みのソケットの方にできるだけ斜めにパイプ入れて水平に戻すと、パイプ自体の長さもできるだけ長く取れる、という事で良いのでしょうか? ソケットは丸の方のにしたいのですが、その場合のパイプの長さの事で悩んでいます… 出来るだけ長く取りたいのですが… (2)ソケットの壁面への取り付け方法 金属アンカーを使うか、Pレスコンクリートビスにしようと思っています。 金属を使う場合はCTアンカーのM6を使い、ソケットの方のネジ穴は広げます。 施工や準備が簡単なのは、PレスコンクリートビスでU字ソケットを付けるのだと思います。 真ん中に支え棒も設置してT字なので、強度的にはPレスコンクリートビスでU字ソケットでも充分なのかもしれませんが、何か気付いた点や実際の施工の仕方などがあればご教示お願いします。

  • 「窓長とシフト長の意味」について教えてください

    >>まず,各映像をAVI 形式(解像度: 360 × 240 pixels, フレームレート: 24f/s)に変換した.さらに,各動画の各フレーム画像(t) をブロック(5 × 5 pixels)に分割し,各ブロック内の画素のRGB 値(0-255) を平均化することで低解像度化した.さらに,各ブロックの輝度値(Y(t, i, j)) を求め,同じブロックでの輝度値の時系列変化に対し窓長5 秒(120frames),シフト長5 秒で離散フーリエ変換(DFT) を行った. 各対話者のみを含む領域を解析領域に設定し,各解析領域に含まれるすべてのブロックについて0.5~2.5Hz 帯域のパワーを求め,そのパワーを解析領域ごとに加算した.この対数値を各対話者について標準化し,これを各対話者の身体動作の大きさの指標とした ↑の文章においての窓長シフト長のそれぞれの意味を教えてほしいです。

  • (おそらく圧縮ファイルと思うのですが)解凍できません。

    おそらくアルバムに入っている曲一つ一つのmp3ファイルを 圧縮結合して一つのファイルにしているようなのですが winampなどでは再生できるのに(1曲で60分として認識されます。) いざ、windows上で解凍しようとしてもできません。 極窓、Extension Reminder、WinExChangeといったファイル判別ソフトを使っても全て不明と判断されてしまいます。 秀丸で無理矢理開くとヘッダー部分に解凍するとファイル名となるであろう名前が羅列されているので解凍もしくは展開はできると思うのですが形式がわかりません。 以下のようなヘッダーですが分かりましたらお願いします。 17 205.1471[][]0.9854[][]XXXXXXX.mp3        545.8257[][]206.1325[][]YYYYYYYYY.mp3          630.2116[][]751.9582[][]ZZZZZZZZZ.mp3 赶 i タ 、 4・ LAME3.87 (beta 1, Sep 27 2000)UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUマ#Λ<:゜・・V ・`喞ホt 神Oアc4・‘[>` f 'ャ,tノMヘ ・BC  鄙aル暾Aモ セhルQ・ @ ・・・ 1曲目は0.9854ブロックを先頭として205.147ブロック、 2曲目は206.1325ブロックを先頭として751.9582ブロックなどと予想はできるのですが...