Как именно анонимные каналы реализованы в Solaris? - PullRequest
1 голос
/ 24 апреля 2019

Я пытаюсь понять каналы Unix и не могу найти никакой информации об анонимных каналах Solaris, которые создаются с помощью чего-то вроде pipe (2) .

Насколько я знаю, этот системный вызов создает буфер где-то в пространстве ядра, а ссылки на чтение и запись заканчиваются дескрипторами файлов с использованием vfs и vnode (не уверен насчет этой части).

Но что это за буфер, созданный в пространстве ядра?Как это реализовано и чем отличается обычный массив байтов?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Рассмотрите возможность использования дверей Solaris.Это быстрый механизм IPC, используемый во всем Solaris.Вы можете найти документацию на docs.oracle.com и много примеров в блогах и в Illumos-gate https://github.com/illumos/illumos-gate

0 голосов
/ 25 апреля 2019

Окончательный ответ (в случае, если кто-то найдет это и заинтересован): этот буфер, созданный в пространстве ядра, реализован с использованием STREAMS: (source: fifonode.h в Gateway Illumos, благодаря jamieguinan)

     struct msgb    *fn_mp;     /* message waiting to be read */
     struct msgb    *fn_tail;   /* last message to read */

Информация о структуре msgb (часть STREAMS) может быть прочитана в man msgb (9).

...