mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 14:32:24 +00:00
c40ebbc65e
If a user program installs custom signal handling for SIGINT, the DartDev instance may exit before its child, potentially causing confusing behavior and 'zombie' children. By ignoring these signals in DartDev, the DartDev instance will only exit once its child process exits. Fixes https://github.com/dart-lang/sdk/issues/42092 Change-Id: I04bf6d1f375b8bb3a4f7022f2c79ddde3bd5f414 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149643 Commit-Queue: Ben Konyi <bkonyi@google.com> Reviewed-by: Jaime Wren <jwren@google.com>
21 lines
586 B
Dart
21 lines
586 B
Dart
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import 'dart:async';
|
|
import 'dart:io';
|
|
|
|
Future<void> main() async {
|
|
var count = 0;
|
|
ProcessSignal.sigint.watch().forEach((s) {
|
|
count++;
|
|
print('child: Got a SIGINT $count times, hit it 3 times to terminate');
|
|
if (count >= 3) {
|
|
exit(42);
|
|
}
|
|
});
|
|
print('Waiting...');
|
|
while (true) {
|
|
await Future.delayed(const Duration(seconds: 5));
|
|
}
|
|
}
|