Avatar ·

क्या Ctrl+C (SIGINT) सिग्नल को इंटरसेप्ट करके defer की तरह क्लीनअप फंक्शन चलाया जा सकता है?

सभी को नमस्कार! मैं Go में एक छोटा HTTP server लिख रहा हूँ जो requests को प्रोसेस करता है और data को file में सेव करता है। जब मैं server चलाता हूँ और Ctrl+C दबाता हूँ, तो program तुरंत बंद हो जाता है और data file अधूरी रह जाती है। मैं चाहता हूँ कि SIGINT (Ctrl+C) मिलने पर पहले cleanup function चले (जैसे data को disk पर flush करना और files को बंद करना), और उसके बाद ही program बंद हो। मुझे `defer` के बारे में पता है — यह तब अच्छा काम करता है जब function normal तरीके से या `return` के ज़रिए खत्म होता है। लेकिन अगर मैं Ctrl+C दबाता हूँ, तो `defer` काम नहीं करता क्योंकि program signal से तुरंत kill हो जाता है। क्या इस signal को intercept करके defer-style cleanup logic चलाना संभव है? ताकि flags की manual checking वाले hacks न लिखने पड़ें। यहाँ मेरे code का example है: ```go package main import ( "fmt" "log" "net/http" "os" "os/signal" "syscall" ) func main() { // Log file खोलते हैं f, _ := os.Create("server.log") defer f.Close() http