test_block_specific/
test_block_specific.rs

1#[macro_use]
2extern crate chan;
3extern crate chan_signal;
4
5use chan_signal::{Signal, kill_this};
6
7fn main() {
8    let r_usr1 = chan_signal::notify(&[Signal::USR1, Signal::ALRM]);
9    kill_this(Signal::USR1);
10    kill_this(Signal::ALRM);
11    assert_eq!(r_usr1.recv(), Some(Signal::USR1));
12    assert_eq!(r_usr1.recv(), Some(Signal::ALRM));
13
14    let (s, r_usr2) = chan::sync(1);
15    chan_signal::notify_on(&s, Signal::USR2);
16    kill_this(Signal::USR2);
17    assert_eq!(r_usr2.recv(), Some(Signal::USR2));
18
19    // The following will terminate the process, as it is NOT blocked
20    // by the main thread.
21    kill_this(Signal::TERM);
22    unreachable!();
23}