Unix domain sockets or FIFOs could be an alternative, but you'd have to do all kinds of complexity to support pub/sub style many to many communication over them (which is what dbus effectively does for you).
Anyway, all the complexities of using sockets/FIFOs could be hidden inside libraries.