How to catch SIGINT for the current in Dart? How to catch SIGINT for the current in Dart? dart dart

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);    }  });}