2

CRTユニットを使用するコンソール アプリケーション ( program) があります。Linux では、 を押しても何も起こりません。ただし、このシグナルを期待どおりに処理したいと思います(プログラムをすぐに終了することにより)。通常の SIG ハンドラーが機能しないように、STDIN および STDOUTを再定義するという通知を見つけました。現在、私は試しましたが、それでも何もしません。SIGINT を手動で ( htop経由で) プロセスに送信すると、ハンドラーが開始されます。ただし、CTRL+C ではそうではありません。残念ながら、ユニットを使用しないという選択肢はありません。CTRL+CSIGINTCRTfpSignal(SIGINT, SignalHandler(@DoSig));CTRL+CCRT

どんな助けでも大歓迎です:)

4

1 に答える 1

0

その理由は、CRT ユニットが標準の入出力ハンドルをリダイレクトするため、SIGINT を「手動で」チェックする必要があるためです。シグナル ハンドラは機能しません。KeyPressed 関数で押されたキーをチェックしてから、SIGINT (例: Ctrl-C) が送信されたかどうかを ReadKey でチェックする必要があります。

于 2013-05-19T15:00:31.917 に答える