A simple daemonless system for broadcasting messages locally
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc Simplify, do not install examples or info manual, and change license Dec 11, 2017
.gitignore Simplify, do not install examples or info manual, and change license Dec 11, 2017
LICENSE Simplify, do not install examples or info manual, and change license Dec 11, 2017
Makefile Simplify, do not install examples or info manual, and change license Dec 11, 2017
README
arg.h Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-broadcast.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-chgrp.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-chmod.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-chown.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-create.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-listen.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-remove.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus-wait.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus.1 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus.5 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus.c Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus.h Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus.texinfo Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_chmod.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_chown.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_close.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_create.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_open.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_poll.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_read.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_unlink.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
bus_write.3 Simplify, do not install examples or info manual, and change license Dec 11, 2017
config.mk Simplify, do not install examples or info manual, and change license Dec 11, 2017
fdl.texinfo Simplify, do not install examples or info manual, and change license Dec 11, 2017
libbus.7 Simplify, do not install examples or info manual, and change license Dec 11, 2017
libbus.c Simplify, do not install examples or info manual, and change license Dec 11, 2017

README

NAME
	bus - A simple daemonless system for broadcasting messages locally

DESCRIPTION
	bus is a simple daemonless system for broadcasting messages locally.
	It is a lightweight alternative to a two-phase interprocess flexible
	barrier.

	bus uses a System V semaphore array and System V shared memory.
	Buses are named; the key of the semaphore array and the shared
	memory is stored in a regular file.

	The shared memory used by bus is always 2048 bytes. Additionally
	all messages should be encoded in UTF-8 and not contain any NULL
	characters, except they MUST always end with a zero byte.
	Furthermore messages should be prefixed with the process
	identifer of the process whence the message originated, followed
	by a space. If the process is ephemeral, 0 should be used instead
	of the process identifier.

	Communication over bus is synchronous. The broadcast call does
	not return until all listeners have received (and copied) the
	message. A malfunctioning program can lock the bus.

	This software package contains a C library and a command line
	utility. The package python-bus provides a Python 3 module.

RATIONALE
	We need an interprocess communication system similar to message
	queues. But we need broadcasting rather than anycasting, so we
	have a fast, simple and daemonless system for announcing events
	to any processes that might be interested.

SEE ALSO
	libshr(7), cmdipc(1), msgctl(3), semctl(3), shmctl(3), mqueue.h(0),
	semaphore.h(0), sem_overview(7), mmap(3), pipe(3), socketpair(3),
	socket(3), unix(7), cmsg(3), kill(3), eventfd(2),  memfd_create(2),
	pthread_mutex_destroy(3), pthread_rwlock_destroy(3), futex(7),
	pthread_spin_destroy(3), pthread_cond_destroy(3), lockf(3), flock(2),
	fcntl(3), ioctl(3), mkfifo(3), rendezvous(2), 9p(2), libdoor(3),
	python-bus