| Crates.io | signalstream |
| lib.rs | signalstream |
| version | 1.0.0 |
| created_at | 2025-12-31 02:09:21.920381+00 |
| updated_at | 2025-12-31 02:09:21.920381+00 |
| description | Send data over Unix signals. (Don't use this). |
| homepage | |
| repository | https://github.com/stickynotememo/signalstream |
| max_upload_size | |
| id | 2013754 |
| size | 12,715 |
Send data over Unix signals.
Unix provides signals, like SIGTERM and SIGSTOP which let two processes, or the kernel and the
process commmunicate with each other. This form of IPC can be used to send any binary
data, if both processes cooperate.
Please do not use this in production. There are many better ways to send data between processes, like pipes.
Use of this crate requires initialisation of the [SignalStream] object. This object can be used
to write or read from the SignalStream of the other specified process.
read() must always be called by a recieving process before any data is sent over the
SignalStream, otherwise data may be incomplete or corrupted. See the documentation for read()
for more details.
// Process 1
use signalstream::*;
let mut sigstream = SignalStream::new(pid2);
let mut buf = [0; 6];
sigstream.read(&mut buf);
println!("String: {}", from_utf8(&buf).unwrap());
// Process 2
let mut sigstream = SignalStream::new(pid1);
sigstream.write("Hello!".as_bytes());
Process 2 must begin execution after Process 1.
This crate uses the SIGUSR1, SIGUSR2 and SIGSTKFLT signals to transfer data and indicate
EOF. Though unikely, if your program (or the other program) use these signals, unexpected
behavior may occur. Additionally, if the other program does not use SignalStream, recieving
these signals may cause it to terminate.