2013-01-17 13 views
5

ダーツコンソールアプリケーションでは、キャッチする方法はありますか?CTRL + 例えばダーツコンソールアプリケーションのCtrl + c

は、プレスCTRL +Cはただ残酷にソケットを閉じるのではなく、サーバからウェブソケットクライアントにきれいな「クロージング」パケットを送信します。

+0

可能重複[ダートでの電流に対してSIGINTをキャッチするには?](http://stackoverflow.com/questions/18448306/how-to-catch-sigint-for-the- current-in-dart) –

答えて

2

私は周りに掘り出し物を持っていました。私はと答えています。答えは、現時点ではnoです。

次の例のように、標準入力キャプチャすることができます:

import 'dart:io'; 

void main() { 
    stdin.onData =() => print(stdin.read()); 
} 

が、これはCCTRL +に応答しません。

このほか、process.dartdart:ioライブラリの一部)は、SIGQUITなどの各種信号を、定義し、onExit()コールバックが、これは、子プロセスではなく、ホストプロセスを制御するために使用されます。

+0

私はほぼ同じ結論に達しました。ホストプロセスでonExitを定義できると思っていましたが、そうではないようです。 – samiy

+0

[http://dartbug.com](http://dartbug.com)で機能リクエストを行う価値があります。 –

+0

誰もそれをしましたか? – paulecoyote

2

これは今

利用可能である私は、うまくいけば、これはすぐにリリースされる予定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(); 
} 

で次のテストコードを発見しました。

も参照してくださいHow to catch SIGINT for the current in Dart?

関連する問題