名前付きパイプとは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 産業 > 農業 > パイプ > 名前付きパイプの意味・解説 

名前付きパイプ

読み方なまえつきパイプ
別名:ネームドパイプ
【英】named pipe

名前付きパイプとは、プロセス間通信使用されるデータ通信経路のことである。

パイプは、コマンド(プロクラム)間でデータを渡す場合使用されるプロセス間の一方向データを送るためのものである。名前付きパイプは、データやりとり双方向にするための仕組みであり、プロセス間でファイル読み書きするようにしてデータ共有できるようになっている

なお、ネットワーク経由してマシン間で名前付きパイプを利用することも可能であるが、速度求められる場合には向かないとされている。

プログラミングのほかの用語一覧
API:  ISAPI  JDBC  MAPI  名前付きパイプ  ODBC  OLE DB  O3D

名前付きパイプ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/02/10 00:34 UTC 版)

名前付きパイプ: named pipe)は、UNIXおよびUnix系の通常のパイプを拡張したもので、プロセス間通信の技法の1つ。その概念は Microsoft Windows にもあるが、意味論は大幅に異なる。通常のパイプは「無名」であり、使用しているプロセスが動作中のみ存在する。名前付きパイプは永続的で、プロセスが消滅しても存在し続けるので、使わなくなったら削除する必要がある。名前付きパイプはファイルのように扱うことができ、プロセス間通信 (IPC) を行うためにプロセスがオープンして使用する。一般にパイプの動作はFIFOだが、名前付きパイプは、ファイルシステム中での種別(通常ファイル、ディレクトリ、デバイスファイル、etc)として「FIFO」と呼ばれている。

Unix系

通常のシェルで使用する無名のパイプとは異なり、名前付きパイプはファイルシステムを使用する。mkfifo()[1] または mknod()[2] で明示的に作成し、2つのプロセスが名前を指定してそのパイプにアクセスでき、一方のプロセスは読み手としてオープンし、もう一方は書き手としてオープンする。名前付きパイプを作成する mkfifo というコマンドもある。

例えば、名前付きパイプを作成し、そのパイプに入力されたものを gzip で圧縮する場合、次のようにすればよい。

mkfifo my_pipe
gzip -9 -c < my_pipe > out.gz &

これとは全く独立に、パイプに圧縮すべきデータを送り込むことができる。

cat file > my_pipe

名前付きパイプは通常のファイルのように削除できる。

rm my_pipe

名前付きパイプはアプリケーションからアプリケーションへの情報転送を一時ファイルを作成することなく行える。例えば、gzip の伸長後の出力を次のように名前付きパイプにつなげる。

mkfifo --mode=0666 /tmp/namedPipe
gzip --stdout -d file.gz > /tmp/namedPipe

そして、伸長されたデータを次のように MySQL のテーブルにロードする[3]

LOAD DATA INFILE '/tmp/namedPipe' INTO TABLE tableName;

名前付きパイプがなければ、file.gz を伸長したものをいったん一時ファイルに格納しないと、MySQLにロードできない。一時ファイルに書き込むと、入出力がより多く発生して時間がかかり、ハードディスク上の空き領域も必要になる。

PostgreSQLのコマンドライン型フロントエンド psql も名前付きパイプからデータをロードする機能を備えている[4]

Windows

Windowsでは、名前付きパイプはクライアントサーバ型通信に基づいて設計されており、通常の読み書き操作以外にソケットのようにも働く。サーバアプリケーションのための明示的な「受動」モードを備えている。Windows 95 では名前付きパイプのクライアントをサポートしている。Windows NT 系OSではクライアントとサーバの両方をサポートしている。

名前付きパイプはファイルのようにアクセスでき、Win32 SDK の CreateFile(オープン)、ReadFile(リード)、WriteFile(ライト)、CloseHandle(クローズ)が使える。Unix系のようなコマンドラインインタフェースは存在しない。

Unix系とは異なり、通常のファイルシステム内に作成することはできない。また永続性もなく、オープンしていたものが全てクローズすると消滅する。全てのパイプは named pipe filesystem (NPFS) のルートディレクトリに置かれ、\\.\pipe\ という特別なパスにマウントされる(つまり、"foo" という名前付きパイプのパス名は "\\.\pipe\foo" となる)。無名パイプも実際にはランダムな名前の名前付きパイプとして実装されている。

Windows上でユーザーが名前付きパイプを目にすることは滅多にないが、例外もある。PC用ハードウェア仮想化ツールであるVMware Workstationでは、ホストシステムのシリアルポートをゲストOSに見せるのに名前付きパイプを使っている。マイクロソフトのカーネルモードデバッガ WinDbg英語版 はデバッグ操作の通信手段として名前付きパイプをサポートしている。なお、WinDbg は通常はデバッグ対象コンピュータとシリアルポートで接続するので、WinDbg と VMware Workstation は相互接続可能であり、デバイスドライバのデバッグを単一のコンピュータ上で行うことができる。どちらのプログラムも \\.\pipe\name という形で名前付きパイプの名前をユーザーが入力する必要がある。

Windows NT の名前付きパイプはセキュリティコンテキストを継承できる。

Microsoft Windows の名前付きパイプについてまとめると次のようになる。

  • マシン間およびマシン内のIPC
  • 全二重または半二重
  • バイト単位またはメッセージ単位
  • 高信頼
  • リード/ライトでブロックするか否かを選択可能
  • 標準デバイスI/Oハンドルを使用 (FileRead, FileWrite)
  • 専用名前空間を使ってハンドルを作成
  • WANトラフィックは効率的でない(TCP/IPなどのようなトラフィック制御は行われない)。
  • パイプの入力バッファからデータを取り除かずにリード可能

.NET Framework 3.5 で名前付きパイプサポートが追加された[5]

Microsoft SQL Server はクライアントとの接続に名前付きパイプも使用できる[6]

特殊なプロセス間通信 (IPC) 共有に基づき、Server Message Block (SMB) で名前付きパイプをネットワークプロトコルとして使用している。SMBのIPCは、名前付きパイプを通してユーザーの認証コンテキストをシームレスかつ透過的に渡すことができる。Windows NT のNTドメインのプロトコルは、名前付きパイプ上のDCE/RPCサービスとして実装されている。

関連項目

脚注

外部リンク


名前付きパイプ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/22 07:35 UTC 版)

パイプ (コンピュータ)」の記事における「名前付きパイプ」の解説

詳細は「名前付きパイプ」を参照 また、POSIX(UNIX)では、mkfifo() または mknod()使ってファイルシステム名前空間に「名前付きパイプ」を作成できる。名前付きパイプは、あたかも入力ファイルまたは出力ファイルあるかのようにオープンでき、そのファイル記述子は、あたかもパイプファイル記述子あるかのように扱える。これによって、親子関係にない任意のプロセス間でパイプ通信を行うことができる。 シェルからのコマンド操作でも、名前付きパイプの利用有用である。シェルからは mkfifo コマンドで名前付きパイプを作ることができる。例えば、大規模なファイルツリーのコピーを、cp コマンド再帰オプション cp -r で行うとうまくない場合がある。tar コマンドテンポラリファイル出力すると、ディスク全体コピーなどでは巨大になり過ぎる。そんな場合に、テンポラリファイルではなく、名前付きパイプを出力先にするのである通常のパイプでは、展開先に移動して展開するコマンドまで全部続けて書かねばならず、失敗しやすい。名前付きパイプを出力先にして一旦コマンド実行し、展開先への移動ls コマンド状況確認した後でおもむろに名前付きパイプを入力元にして tar コマンドで展開すればよい。 Windowsでは、名前付きパイプを作成するサーバ側は、CreateNamedPipe() で「\\.\pipe\パイプ名」という形式の名前で作成すればパイプにつなぐクライアント側からファイル読み書きと同じ操作読み書きすることができる。また、Windows における匿名パイプは、ランダムな名前の名前付きパイプとして実装されている。 マシン間の通信にも名前付きパイプを利用することができるが、データを送るたびに、通信確認のためのデータが行来するので、他のマシン大量データ通信するときは、ソケットの方が高速である。ただし、マシン内のプロセス間通信場合は、Windowsではカーネル内動作するので名前付きパイプは高速である。

※この「名前付きパイプ」の解説は、「パイプ (コンピュータ)」の解説の一部です。
「名前付きパイプ」を含む「パイプ (コンピュータ)」の記事については、「パイプ (コンピュータ)」の概要を参照ください。

ウィキペディア小見出し辞書の「名前付きパイプ」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



名前付きパイプと同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「名前付きパイプ」の関連用語

名前付きパイプのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



名前付きパイプのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【名前付きパイプ】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの名前付きパイプ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのパイプ (コンピュータ) (改訂履歴)、UNIXファイルタイプ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS