2009-11-21 20 views
10

से बाहर निकलने पर एक और फ़ंक्शन कॉल करें जब मुख्य() सी में बाहर निकलता है तो अतिरिक्त कार्य को कॉल करना संभव है?मुख्य()

धन्यवाद!

उत्तर

23

the atexit function का उपयोग करके बाहर निकलने के लिए आप फ़ंक्शन पंजीकृत कर सकते हैं।

एमएसडीएन में यह कैसे किया जाता है a nice succinct example है। असल में, atexit के साथ पंजीकृत फ़ंक्शंस को पंजीकृत होने के विपरीत क्रम में निष्पादित किया जाता है।

void myfunc() { 
    /* Called when the program ends */ 
} 

int main(int arc, char *argv[]) { 
    atexit(myfunc); 
    ... 
    return 0; 
} 
+0

वास्तव में अच्छा जवाब :) – SjB

+3

कभी कभी एक अंधे गिलहरी एक नट ... –

+0

सिर्फ मैं क्या जरूरत है, धन्यवाद पाता है! – edarroyo

9

atexit() समारोह की कोशिश करो। बस एक साइड नोट। डेल्फी पुस्तकालयों में इसी तरह की सुविधा के दुरुपयोग ने उन अनुप्रयोगों को जन्म दिया जो करीब से धीमे गति से धीमे होते हैं।

2

ग्रेट सवाल और जवाब:

1

जबकि atexit() प्रक्रिया समाप्ति पर चलाने के लिए एक समारोह के पंजीकरण के लिए मानक है, जीसीसी एक नाशकfunction attributeप्रदान करता है * एक समारोह का कारण बनता है कि जब main() पूरा कर लिया है या exit() बुलाया गया है स्वचालित रूप से कहा जाता है।

void __attribute__ ((destructor)) my_fini(void); 

* जीसीसी विशिष्ट