如何捕获当前在Dart的SIGINT? [英] How to catch SIGINT for the current in Dart?

查看:118
本文介绍了如何捕获当前在Dart的SIGINT?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在当前进程的Dart程序中捕获 Ctrl + C 或SIGINT?



Node类似的东西:

  process.on('SIGINT',function 
// do stuff
});


解决方案

https://codereview.chromium.org/119093007/patch/120001/130013 =nofollow>统一差异:tests / standalone / io / signals_test_script.dart

  importdart: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();
}


How can Ctrl+C or SIGINT be caught in a Dart program for the current process?

Something similar to this for Node:

process.on('SIGINT', function() {
    // do stuff
});

解决方案

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

这篇关于如何捕获当前在Dart的SIGINT?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆