ipcsの「ファイル」はどこにあり、名前付きパイプ(mkfifo)がipcsにリストされていないのですか?

ipcsの「ファイル」はどこにあり、名前付きパイプ(mkfifo)がipcsにリストされていないのですか?

私はLinux共有メモリを研究していたが、偶然にこのipcsコマンドを見つけました。

マニュアルページから:

ipcs - provide information on ipc facilities

ipcマニュアルページには説明がありませんが、プロセス間通信を示す可能性が高くなります。これは、共有メモリセグメント、メッセージキュー、セマフォ配列など、リストされている情報の文脈でも意味があります。

ipcslinux / unixのすべてが「ファイル」であるか、少なくともファイルに似たオブジェクトであるため?にリストされている要素では、「ファイル」はどこにあるのだろうか。

私が作成した名前付きパイプmkfifoがにリストされていないのはなぜですかipcs?私が理解しているように、fifoはキューです。 Named Pipeの生成はmkfifoメッセージキューの生成とどのように異なりますかipcmk

ベストアンサー1

ここにはいくつかの質問があります。

  • ipcsにリストされている要素のファイルはどこにありますか?

時々違うよねキューは仮想ファイルシステムに表示されます。 mq_overview(7)から:

   Mounting the message queue file system
       On  Linux,  message queues are created in a virtual file system.  (Other implementations may also provide such a feature, but
       the details are likely to differ.)  This file system can be mounted (by the superuser) using the following commands:

           # mkdir /dev/mqueue
           # mount -t mqueue none /dev/mqueue

共有メモリ(shm_overview(7))

   Accessing shared memory objects via the file system
       On Linux, shared memory objects are created in a (tmpfs) virtual file system, normally mounted under /dev/shm.  Since  kernel
       2.6.19,  Linux supports the use of access control lists (ACLs) to control the permissions of objects in the virtual file sys-
       tem.

セマフォ(sem_overview(7))

   Accessing named semaphores via the file system
       On Linux, named semaphores are created in a virtual file system, normally mounted under /dev/shm,  with  names  of  the  form
       sem.somename.  (This is the reason that semaphore names are limited to NAME_MAX-4 rather than NAME_MAX characters.)

       Since  Linux  2.6.19,  ACLs can be placed on files under this directory, to control object permissions on a per-user and per-
       group basis.
  • 私が作成した名前付きパイプmkfifoがにリストされていないのはなぜですかipcs

これについてはよく分からないので、答えではなく私の意見を申し上げます。私の仮定は、ソケットのように実際のファイルシステムに存在するので、カーネルが共有メモリセグメントとメッセージキューを管理する方法とは異なる方法で管理されているということです。

  • mkfifoで生成された名前付きパイプとipcmkで生成されたメッセージキューの違いは何ですか?

パイプとメッセージキューの主な違いは、パイプが2つのプロセス間の通信チャネルにすぎないことです。バイトレベルで動作します。必要な方法で読み書きすることができ、通信プロトコルを設計する必要があります。これは厳しいFIFOです。他のバイトより先に書き込まれたバイトは、常に他端から先に読み込まれます。メッセージキューはバイトではなくメッセージを処理します。通常、それほど厳しくないFIFOです。実装によって異なりますが、メッセージ間の優先順位メカニズムをサポートできます。

いくつかの点では、メッセージキューはより多くの機能を提供しますが、必要に応じてメッセージキューを使用してFIFOを実装することも、その逆も同様です。

おすすめ記事