Находится' универсален '/dev/shm в Linux и Ubuntu?

Поскольку FIFO передает скорость по каналу, я считаю размещение его в псевдодиске названным /dev/shm. Я вижу, что уже существуют некоторые файлы там:

$ ll /dev/shm
total 1536
drwxrwxrwt  2 root    root         280 Oct  2 17:19 ./
drwxr-xr-x 22 root    root        4840 Oct  2 05:49 ../
-rwx------  1 rick    rick    67108904 Oct  2 04:29 pulse-shm-1087740037*
-rwx------  1 lightdm lightdm 67108904 Oct  2 04:29 pulse-shm-1609193682*
-rwx------  1 rick    rick    67108904 Oct  2 04:34 pulse-shm-2114917541*
-rwx------  1 rick    rick    67108904 Oct  2 04:29 pulse-shm-2616701246*
-rwx------  1 rick    rick    67108904 Oct  2 17:14 pulse-shm-3211887872*
-rwx------  1 rick    rick    67108904 Oct  2 17:14 pulse-shm-3411101615*
-rwx------  1 rick    rick    67108904 Oct  2 04:32 pulse-shm-3740841284*
-rwx------  1 lightdm lightdm 67108904 Oct  2 04:29 pulse-shm-4039050064*
-rwx------  1 rick    rick    67108904 Oct  2 04:29 pulse-shm-608722223*
-rwx------  1 rick    rick    67108904 Oct  2 05:46 pulse-shm-629296834*
-rwx------  1 rick    rick    67108904 Oct  2 17:19 pulse-shm-791566179*
-rwx------  1 lightdm lightdm 67108904 Oct  2 04:29 pulse-shm-871250926*

Действительно ли безопасно предположить, что этот каталог универсален во всех системах Ubuntu или еще лучше всех системах Linux?

Если каталог не будет существовать, то я создам свой файл FIFO канала в /tmp но надо надеяться которого никогда не происходит.


Править: С большое спасибо двум большим ответам, записанным ниже, я нашел эту статью: Почему именованные каналы использования на Linux

Почему именованные каналы использования?

Именованные каналы нечасто используются на серьезном основании. В системах Unix существует почти всегда много способов сделать в значительной степени то же самое. Существует много способов записать в файл, читать из файла и освободить файл, хотя именованные каналы имеют определенную эффективность, идущую для них.

С одной стороны, содержание именованного канала находится в памяти вместо того, чтобы быть записанным в диск. Это передается только, когда оба конца канала были открыты. И можно записать в канал многократно, прежде чем он будет открыт в другом конце и считан.

0
задан 4 October 2018 в 06:26

2 ответа

Для Linux, да, это универсально доступно и согласно документации ( https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt ) glibc, стандартная библиотека для C для Linux ожидает /dev/shm существовать.

Однако я все еще предложил бы пересмотреть дизайн Вашего сценария или программы. FIFOs и сокеты имеют тенденцию быть помещенными в /var/run/appname или /tmp/ каталоги. Хороший пример этого /var/run/acpid.socket. Так как те файловые системы также tmpfs точно так же, как /dev/shm, нет никакого различия в производительности.

BTW, помещая FIFOs в tmpfs не должен влиять на производительность, так как каналы трудно кодировали размер буфера 65 536 байтов на Linux, но могут быть изменены через/proc/sys/fs/pipe-max-size. См. https://unix.stackexchange.com/a/11954/85039

0
ответ дан 13 April 2019 в 06:43

Данные, перемещающиеся через FIFO специальный файл, никогда не будут поражать файловую систему. Это означает, что, является ли базовая файловая система tmpfs или ext2, скорость FIFO должна быть тем же.

/dev/shm предназначается для использования реализацией общей памяти POSIX. Для другого использования, /tmp или /run было бы более соответствующим. Если Ваш именованный канал является определенным для пользователя, с помощью $XDG_RUNTIME_DIR от , Спецификация Базового каталога XDG может быть соответствующей.

0
ответ дан 13 April 2019 в 06:43

Другие вопросы по тегам:

Похожие вопросы: