Minitalk demonstrates how two programms — a client and a server — can communicate using Unix signals as a data transmission medium. The client sends messages bit-by-bit using:
- SIGUSR1 → represents binary
0 - SIGUSR2 → represents binary
1
A handshake mechanism ensures that each bit is acknowledged before the next is sent, guaranteeing error-free transmission — even for Unicode characters. This handshake mechanism makes Minitalk a simple but robust example of inter-process communication.
- Unicode support (multi-byte message handling)
- Error-free transmission using handshake acknowledgment
- Runs entirely over Unix signals
- Lightweight and easy to understand
server.c– Handles incoming signals and prints the received message.client.c– Sends the message bit by bit to the server.libft/– (If applicable) Custom implementations of common C functions.Makefile– Builds the client and server binaries.
Clone the repository
git clone https://github.com/WaPoco/MinitalkChange directories
cd minitalkCompile both server and client
makeAt the end to clean up
make fcleanStart the server (prints its PID)
./serverSend a message from the client (use the server PID)
./client <server_pid> "Your message here"-
Client converts each character to bits.
-
Sends SIGUSR1 for 0 and SIGUSR2 for 1.
-
Server collects bits into bytes and writes characters.
-
Server acknowledges each received bit.
-
Client proceeds only after ack.