どのように私はをキャッチしますか? + CイベントはC++でですか?あなたは(私たちは右のPOSIXを話している?)SIGINT signalをキャッチする必要がありどのようにしてctrl-cイベントを捕捉できますか? (C++)
答えて
signal
は、最も信頼性の高い方法ではありません。 sigaction
を使用することをお勧めします。 Tomのコードは次のようになります。
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
void my_handler(int s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = my_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
pause();
return 0;
}
my_handlerは引数として 'int s'を取るべきだと思います。 'sig_t'自体が関数ポインタ型です。 –
Works on OSXを使用する必要があります。私のmain.mmファイルでは、signal.h、stdlib.h、またはunistd.hも含める必要はありませんでした。私はstdio.hとFoundation/Foundation.hを含めたところですが、シャットダウンメッセージを出力するためにstd :: coutの処理が必要な場合は、iostreamをインクルードしました。 – Volomike
参照@Gab Royer'sの答え。
例:それは実装が異なるよう
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
void my_handler(sig_t s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
signal (SIGINT,my_handler);
while(1);
return 0;
}
ええ、これはプラットフォームに依存する質問です。
コンソールプログラムをPOSIXで作成している場合は、 はシグナルAPI(#signal.h >)を使用します。
WIN32 GUIアプリケーションでは、WM_KEYDOWNメッセージを処理する必要があります。 Windowsコンソールアプリの
、あなたはCTRL +CとCTRL +BREAKを処理するためにSetConsoleCtrlHandlerを使用したいです。
例としてhereを参照してください。
- 1. backbone.jsプレーンな「変更」イベント以外のすべてのイベントをどのように捕捉できますか?
- 2. 電源ボタンロングプレスはどのようにして捕捉できますか?
- 3. 通知のクリックをどのように捕捉できますか?
- 4. 複数の例外をどのように捕捉できますか?
- 5. Apache SparkでExecutor startなどのイベントを捕捉できますか?
- 6. Extjsイベントを捕捉する(コンボボックス)
- 7. 以下のトリガーの例外をどのように捕捉しましたか?
- 8. Aspectjは春のフレームワークですべてのイベントを捕捉しませんか?
- 9. jsdom.jqueryifyコールバックによってスローされたエラーをどのように捕捉できますか?
- 10. 捕捉セル列のクリックと実行イベント
- 11. HTML5オーディオで 'stop'イベントを捕捉して何かをするには?
- 12. アプリケーションを停止するために捕捉するイベントはどれですか?
- 13. javaのmainメソッドによってスローされた例外をどのように捕捉しますか?
- 14. すべてのIframeのJavaScriptエラーを(window.errorを使用して)どのように捕捉するのですか?
- 15. QMainWindowはQDialogによって捕捉されるべきイベントを処理しています
- 16. PHPで外部イベントを捕捉するには?
- 17. MDIチャイルドロードのイベントを初めて捕捉する方法はありますか?
- 18. WebGL Three.jsコンテナがスクロールイベントを捕捉しないようにする
- 19. 複数の子Vueコンポーネント間でイベントを捕捉する方法
- 20. Pivot_SelectionChangedでAutoSuggestBoxのイベントを捕捉する方法は?
- 21. クラスヘルパーでクラスのイベントを捕捉する方法は?
- 22. Javaでスタックオーバーフローを捕捉して回復するにはどうすればよいですか?
- 23. サイクル角2でイベントを捕捉する方法は?
- 24. StAX XML-parserで属性イベントを捕捉する方法は?
- 25. jquery mobileダイアログを使用しているときにonloadイベントを捕捉するにはどうすればよいですか?
- 26. MediaControllerのポーズ/再生ボタンをクリックしたときのイベントの捕捉方法
- 27. laravelのlucadegasperi oauth2サーバーがauthミドルウェアによって捕捉されるとどうなるでしょうか?
- 28. ソースが外部Webサイトの場合、リゾルバからのエラーをどのように捕捉しますか?
- 29. eventmachineとの接続解除イベントを捕捉する(ping + timeout?)
- 30. ManualResetEvent.WaitOne()でObjectDisposedExceptionを捕捉しても安全ですか?
コンソールアプリケーション、Windowsアプリケーション、または何ですか? – GManNickG
どのOSのWindows、Linuxなど。 – shf301
これはQtアプリケーションですが、開発中にコンソールから実行しています。 (これはLinuxです) – Scott