Skip to content
This repository has been archived by the owner on Oct 6, 2024. It is now read-only.
/ bus Public archive

[Feature complete] A simple daemonless system for broadcasting messages locally

License

Notifications You must be signed in to change notification settings

maandree/bus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repo has been moved to Codeberg and may be out of date on GitHub.
Canonical repo: https://codeberg.org/maandree/bus


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