| // 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:convert'; | 
 | import 'dart:io'; | 
 |  | 
 | import 'package:expect/expect.dart'; | 
 |  | 
 | Future<void> main() async { | 
 |   final process = await Process.start( | 
 |     Platform.resolvedExecutable, | 
 |     [ | 
 |       Platform.script.resolve('regress_42092_script.dart').toString(), | 
 |     ], | 
 |   ); | 
 |   late StreamSubscription sub; | 
 |   int count = 0; | 
 |   sub = process.stdout.transform(Utf8Decoder()).listen((event) { | 
 |     print(event); | 
 |     if (event.contains('child: Got a SIGINT')) { | 
 |       ++count; | 
 |       if (count == 3) { | 
 |         sub.cancel(); | 
 |       } | 
 |     } | 
 |     process.kill(ProcessSignal.sigint); | 
 |   }); | 
 |  | 
 |   await process.exitCode; | 
 | } |