How to catch SIGINT for the current in Dart?
I found the following test code at Unified Diff: tests/standalone/io/signals_test_script.dart
import "dart:io";void main(args) { int usr1Count = int.parse(args[0]); int usr2Count = int.parse(args[1]); var sub1; var sub2; void check() { if (usr1Count < 0 || usr2Count < 0) exit(1); if (usr1Count == 0 && usr2Count == 0) { sub1.cancel(); sub2.cancel(); } print("ready"); } sub1 = ProcessSignal.SIGUSR1.watch().listen((signal) { if (signal != ProcessSignal.SIGUSR1) exit(1); usr1Count--; check(); }); sub2 = ProcessSignal.SIGUSR2.watch().listen((signal) { if (signal != ProcessSignal.SIGUSR2) exit(1); usr2Count--; check(); }); check();}
It looks like the SIGUSR1
and SIGUSR2
fields used in the old answer are now deprecated. I got the following example working using the sigint
field:
import "dart:io";void main() { var n = 0; ProcessSignal.sigint.watch().listen((signal) { print(" caught ${++n} of 3"); if (n == 3) { exit(0); } });}