खाते में ध्यान देने के कई कारक हैं। एक महत्वपूर्ण बात यह है कि बाहरी प्रोग्राम उन सभी प्रणालियों पर मौजूद होगा जहां आपका सॉफ़्टवेयर स्थापित है। यदि कोई संभावना है कि यह गायब हो जाएगा, तो हो सकता है कि यह आपके प्रोग्राम के अंदर करना बेहतर हो।
इसके खिलाफ वजन, आप मान सकते हैं कि आपके प्रोग्राम में लोड किया गया अतिरिक्त कोड निषिद्ध है - आपको अपने आवेदन के इस तरह के कभी-कभी उपयोग किए जाने वाले हिस्से के लिए कोड ब्लोट की आवश्यकता नहीं है।
सिस्टम() फ़ंक्शन सुविधाजनक, लेकिन खतरनाक है, कम से कम नहीं क्योंकि यह आमतौर पर एक खोल का आह्वान करता है। यूनिक्स पर, फोर्क() और exec() सिस्टम कॉल के माध्यम से आप प्रोग्राम को अधिक सीधे कॉल करने से बेहतर हो सकते हैं। [ध्यान दें कि system()
फ़ंक्शन को संयोग से कॉल करने से सिस्टम कॉल बहुत अलग है!] ओटीओएच, आपको अपने प्रोग्राम में सभी खुले फ़ाइल डिस्क्रिप्टर को बंद करने के बारे में चिंता करने की आवश्यकता हो सकती है - खासकर यदि आपका प्रोग्राम किसी प्रकार का डिमन चल रहा है अन्य उपयोगकर्ता; यदि आप विशेष विशेषाधिकारों का उपयोग नहीं कर रहे हैं, तो यह एक समस्या से कम है, लेकिन यह अभी भी एक अच्छा विचार है कि आप जिस भी कार्यक्रम का इरादा नहीं रखते हैं, उसे आमंत्रित कार्यक्रम न दें। आपको fcntl()
सिस्टम कॉल और FD_CLOEXEC
ध्वज को देखने की आवश्यकता हो सकती है।
आम तौर पर, यदि आप अपने कार्यक्रम में कार्यक्षमता बनाते हैं, तो यह चीजों पर नियंत्रण रखना आसान है, लेकिन यह एक मामूली निर्णय नहीं है।
स्रोत
2009-02-04 01:51:08
बस यह शाम मैं अपने कुछ छोटे पर्ल उपयोगिता कार्यक्रमों के माध्यम से चला गया और फाइल :: कॉपी - नया संस्करण के साथ कॉपी कमांड को सिस्टम कॉल का उपयोग करके बदल दिया गया है और विंडोज़ की बजाय मेरे सभी प्लेटफॉर्म पर काम करता है। – Sol