В нашей компании есть программное обеспечение, которое использует разделяемую память. Он использует его для потоковой передачи данных из одного процесса в другие процессы. Для него можно использовать сокеты, но поскольку это один-ко-многим, для каждого потребительского процесса должен быть создан отдельный сокет, который на самом деле не оптимален. На современных компьютерах использование общего файла, вероятно, подойдет, но это программное обеспечение было разработано в середине 90-х, когда диски были довольно медленными, и это программное обеспечение предъявляло довольно жесткие требования к задержке. Он использует своего рода кольцевой буфер, в который процесс производителя записывает свои данные. Семафоры используются для синхронизации, поэтому другие процессы не будут видеть частично обновленные данные.
В большинстве современных программных потоков, как правило, вместо нескольких процессов используется общая память.
Что касается труб, то для них чаще всего используются кожухотрубные трубы:
ps ax | grep java
Я считаю, что именованные каналы в значительной степени заменены сокетами. Даже если они все еще используются, я не знаю ни одного из них.
Вы также можете прочитать соответствующую главу «Искусство программирования Unix» Эрика Стивена Рэймонда. Он дает очень хороший обзор методов Unix IPC и их использования.