Function notify_on Copy item path Source pub fn notify_on(chan: &Sender <Signal >, signal: Signal )Expand description Subscribe to a signal on a channel.
When signal is delivered to this process, it will be sent on the channel
given.
Note that a signal is sent using a non-blocking send. Namely, if the
channel’s buffer is full (or it has no buffer) and it isn’t ready to
rendezvous, then the signal will be dropped.
There is currently no way to unsubscribe. Moreover, the channel given
here will be alive for the lifetime of the process. Therefore, the channel
will never be closed.
THIS MUST BE CALLED BEFORE ANY OTHER THREADS ARE SPAWNED IN YOUR
PROCESS.
7 fn main() {
8 let (s, r) = chan::sync(1 );
9 chan_signal::notify_on (& s, Signal::HUP);
10 kill_this(Signal::HUP);
11 assert_eq! (r.recv(), Some (Signal::HUP));
12 }More examples Hide additional examples
examples/test_usr1.rs (
line 9 )
7 fn main() {
8 let (s, r) = chan::sync(1 );
9 chan_signal::notify_on (& s, Signal::USR1);
10 kill_this(Signal::USR1);
11 assert_eq! (r.recv(), Some (Signal::USR1));
12 }examples/test_one_not_other.rs (
line 11 )
8 fn main() {
9 block(& [Signal::TERM]);
10 let (s, r) = chan::sync(1 );
11 chan_signal::notify_on (& s, Signal::HUP);
12 kill_this(Signal::TERM);
13 kill_this(Signal::HUP);
14 assert_eq! (r.recv(), Some (Signal::HUP));
15 }10 fn main() {
11 let (s, r) = chan::sync(1 );
12 chan_signal::notify_on (& s, Signal::HUP);
13 thread::spawn(move || thread::sleep(Duration::from_secs(10 )));
14 thread::sleep(Duration::from_millis(500 ));
15 kill_this(Signal::HUP);
16 assert_eq! (r.recv(), Some (Signal::HUP));
17 }examples/test_many_to_one.rs (
line 10 )
7 fn main() {
8 let (s1, r1) = chan::sync(1 );
9 let (s2, r2) = chan::sync(1 );
10 chan_signal::notify_on (& s1, Signal::HUP);
11 chan_signal::notify_on (& s2, Signal::HUP);
12 kill_this(Signal::HUP);
13 assert_eq! (r1.recv(), Some (Signal::HUP));
14 assert_eq! (r2.recv(), Some (Signal::HUP));
15 }7 fn main() {
8 let (s1, r1) = chan::sync(1 );
9 let (s2, r2) = chan::sync(1 );
10 chan_signal::notify_on (& s1, Signal::HUP);
11 chan_signal::notify_on (& s2, Signal::TERM);
12 kill_this(Signal::HUP);
13 assert_eq! (r1.recv(), Some (Signal::HUP));
14 kill_this(Signal::TERM);
15 assert_eq! (r2.recv(), Some (Signal::TERM));
16 }Additional examples can be found in: