2016-12-01 8 views
5

मुझे लगता है कि हर जगह यह करता है कुछ विरासत कोड है।एक अवैध फ़ाइल डिस्क्रिप्टर बंद करने क्या करता है?</p> <pre><code>int fd; // open a file if(fd == -1) { close(fd); } </code></pre> <p>यह मेरे लिए बहुत गलत लग रहा है:

एक अवैध फ़ाइल डिस्क्रिप्टर वैध बंद कर रहा है?

+0

* यह मेरे लिए बहुत गलत लगता है। * सहमत। उस कोड के पीछे "सोच" होना चाहिए ... दिलचस्प। –

उत्तर

4

मैनुअल के अनुसार:

सफल समापन पर, 0 मान दिया जाता है। अन्यथा, मान का -1 लौटा दिया गया है और वैश्विक पूर्णांक परिवर्तनीय त्रुटि त्रुटि को इंगित करने के लिए सेट है।

और उसके बाद:

The close() system call will fail if: 

[EBADF]   fildes is not a valid, active file descriptor. 

तो हानिकारक कुछ नहीं होगा।

4

यह एक त्रुटि कोड देता है। गलत कुछ भी नहीं है लेकिन यह उपयोगी नहीं है, क्योंकि return वैल्यू पर कोई भी चेक नहीं किया गया है।

man page

वापसी मूल्य

close() रिटर्न का हवाला देते हुए सफलता पर शून्य। त्रुटि पर, -1 वापस आ गया है, और इरनो उचित रूप से सेट है।

और

त्रुटियाँ

EBADF
fd एक वैध फ़ाइल खोलने वर्णनकर्ता नहीं है।

संबंधित मुद्दे