現在Linux TCP/IPサーバーで作業しています。サーバープログラムはCで動作していますが、現在はテストしていますが、Ctrl-cで終了するたびに、使用しているポートは解放されず、ロックされていないデータベースもありません。 Ctrl + C信号が受信されたときに終了するサブルーチンをどのように定義しますか?C言語で書かれたLinux TCP/IPサーバーでのCtrl-Cの処理
答えて
つのオプション:Rが指摘したようにsighandler_t signal(int signum, sighandler_t handler);
は、sigactionがsignalよりも移植され、おそらく:とint atexit(void (*function)(void));
- がでクリーンアップルーチンを追加します。 Linuxではあまり慣れない。
警告:あなたのプログラムがSIGKILL(Ctrl + /)で殺されたり、他の未処理のシグナルが受信された場合、atexitルーチンは実行されません。
これは問題ではないと思います。ソケットの問題に関しては –
、私はあなたの答えに同意します。しかし、データベース接続で... – jtdubs
ああ、私は質問の後半を読むにはあまりにも怠惰でした。私はデータベースについて同意します。そして、それは 'atexit'ではなく、必要なシグナルハンドラです。 'atexit'で登録された関数は、処理されていないシグナルからプロセスが消滅したときには実行されません。 –
ルックアップsetsockopt
およびSO_REUSEADDR
。このオプションは、古い元のサーバープロセスのソケットに設定されている必要があります。新しいサーバーは、TIME_WAIT
の期限が切れるまでポートをバインドできません。
@Bortds一般的に、ポートはすぐに解放されませんので、しばらくお待ちください。私は働いたサーバープロジェクトからこれを見つけました。
@everybody Rさんの答えは私の答えの大集合です。 – prabhakaran
- 1. C言語:前処理後のソースファイル
- 2. 処理言語はいつですか?
- 3. Visual StudioコードはC言語で書かれた言語サーバーをサポートしています
- 4. オーディオファイルをLinuxのC言語でストリーミング
- 5. USBドライブをC言語のLinuxでマウント
- 6. C言語のスレッド(linux)
- 7. C言語でのタイマーと処理の問題
- 8. C言語でのexec */system出力のパイプ処理
- 9. Google Go言語での例外処理
- 10. PHPでの自然言語処理
- 11. 処理言語のリアルタイムコントロール
- 12. Node.jsがC/C++プログラミング言語で書かれたのはなぜですか?
- 13. C言語でIRC MSG/PING-PONGの処理(コード提供)
- 14. C言語で構造体の配列を処理するマルチスレッド
- 15. リストビューのスクロールイベントをC言語で処理する#
- 16. 管理された言語でメモリマネージャを書きますか?
- 17. PHPで書かれた言語パーサーライブラリ
- 18. エラーを処理する方法SOAPでの処理がC言語で行われていない#
- 19. C言語用の並行処理パッケージはありますか?
- 20. gcc CコンパイラはC言語で書かれていますか?
- 21. 自然言語処理データベースクエリ
- 22. UTF-8で任意の言語を処理できますか?
- 23. kivy言語で列挙型が処理されませんか?
- 24. Androidで書かれたInit.goldfishのプログラミング言語は何ですか?
- 25. C言語でPInvoke char *がC#でStringとして処理されるDLL。 C DLL内のヌル文字
- 26. 異なるプログラミング言語で書かれた並行プロジェクトの管理
- 27. トピックの自然言語処理
- 28. iPhone用の自然言語処理
- 29. 自然言語クエリ処理のデータベース
- 30. Javaの自然言語処理ライブラリ
CTRL + Zで試しましたか? –
ctrl + zはプロセスを終了せず、単に停止します。 – jtdubs