如何在当前程序的Dart程序中捕获Ctrl+ C或SIGINT?
Node与此类似:
process.on('SIGINT', function() {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
我在统一差异处找到了以下测试代码: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();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
看起来旧答案中使用的SIGUSR1和SIGUSR2字段现在已弃用。我得到了以下使用该sigint字段的示例:
import "dart:io";
void main() {
var n = 0;
ProcessSignal.sigint.watch().listen((signal) {
print(" caught ${++n} of 3");
if (n == 3) {
exit(0);
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |