यह देखते हुए कि आप एक विंडोज़ - अनन्य प्रोग्राम बना रहे हैं, system()
पर कॉल क्यों नफरत करते हैं? जब से मैंने सी ++ में प्रोग्रामिंग शुरू की, तब से "सिस्टम को स्पर्श न करें" कुछ ऐसा था जो मैंने बहुत भयानक सुना है। मैंने उस सिद्धांत को विनम्रता से पालन किया है लेकिन इसके बारे में इतना बुरा क्या है?सिस्टम() के बारे में इतना बुरा क्या है?
उत्तर
जो आपने सिस्टम कॉल के अंदर रखा है वह उस ओएस पर निर्भर है जिस पर आप प्रोग्राम चलाएंगे। तो यह पूरी तरह से गैर पोर्टेबल है। इसके अलावा, कई चीजें गलत हो सकती हैं, क्योंकि आप केवल शून्य में एक कमांड फेंक रहे हैं, और आशा करते हैं कि सब कुछ ठीक हो जाएगा। त्रुटि प्रबंधन (उदाहरण के लिए - जिस प्रोग्राम को आप चलाने के लिए चाहते हैं वह मौजूद नहीं है, या पथ सही ढंग से सेट नहीं है, या आपके पास अनुमति नहीं है, आदि) बहुत कठिन या असंभव है।
इसके अलावा, अधिकांश समय में टिप्पणियों में उल्लेख किया गया है (वास्तव में "सबसे अधिक" 99.9 99% की तरह) system
का उपयोग करने की आवश्यकता नहीं है।
"तो यह पूरी तरह से गैर पोर्टेबल है।" प्रणाली (""); मेरे लिए सुंदर पोर्टेबल लग रहा है – user1233963
std::system()
आवश्यक है कि आप जो भी चाहते हैं उसे करने के लिए आदेश पर भरोसा करें। आपके पास यह सत्यापित करने का कोई तरीका नहीं है कि क्या यह धारणा उचित है या नहीं। उदाहरण के लिए पाथ पर्यावरण चर के लिए असामान्य मान मानक सेटअप की तुलना में एक अलग प्रोग्राम निष्पादित किया जा सकता है।
std::system()
पर कॉल का व्यवहार सिस्टम निर्भर है। यहां तक कि यदि इस समय की आवश्यकता है, तो एप्लिकेशन को अन्य ऑपरेटिंग सिस्टम पर चलाने की आवश्यकता नहीं है, यह आवश्यकता बदल सकती है। यह देखते हुए कि std::system()
अक्सर उन प्रयोजनों के लिए उपयोग किया जाता है जिन्हें अधिक पोर्टेबल तरीके से प्राप्त किया जा सकता है (विशेष रूप से शुरुआती लोगों द्वारा), यहां प्लेटफॉर्म निर्भरता पेश करने की आवश्यकता नहीं है।
system()
ओएस के कमांड दुभाषिया को एक अलग प्रक्रिया के रूप में आमंत्रित करता है। इससे अधिक बार, कॉलिंग प्रक्रिया के भीतर सीधे उसी परिणाम को पूरा करने के लिए मूल एपीआई उपलब्ध हैं और इसके ऊपर अधिक नियंत्रण के साथ।
- 1. ओवरलैपिंग इंस्टेंस के बारे में इतना बुरा क्या है?
- 2. जीएलयूटी इतना बुरा क्यों है?
- 3. स्ट्रिंग concatenation के साथ एक्सएमएल निर्माण के बारे में इतना बुरा क्या है?
- 4. xsl के बारे में इतना बुरा क्या है: प्रत्येक के लिए?
- 5. , "_MOVE_H" के बारे में इतना खास क्या है?
- 6. मोनाड्स के बारे में इतना खास क्या है?
- 7. जेनेरिक.एक्सएएमएल के बारे में इतना खास क्या है?
- 8. यूआई थ्रेड के बारे में इतना खास क्या है?
- 9. ओआरएम के बारे में इतना अच्छा क्या है?
- 10. ट्विस्ट के बारे में इतना अच्छा क्या है?
- 11. एसटीएल के बारे में इतना अच्छा क्या है?
- 12. वीबी 6 में चर के रूप में बटन कैप्शन का उपयोग करने के बारे में इतना बुरा क्या है?
- 13. डॉटनेटनेट डॉक्स में सुझाए गए अनुसार, यूएनसी शेयर से आईआईएस वेब एप्लिकेशन चलाने के बारे में इतना बुरा क्या है?
- 14. क्या OutOfMemoryError को कैप्चर करना इतना बुरा विचार है?
- 15. क्या आरवीएम का सिस्टम-वाइड इंस्टॉलेशन एक बुरा विचार है?
- 16. निकालने के साथ इतना गलत क्या है()?
- 17. के बारे में Node.js फाइल सिस्टम
- 18. सिस्टम के बारे में .Linq.Lookup वर्ग
- 19. थिंक पास्कल डीबगर के बारे में क्या है जो इसे इतना महान बनाता है?
- 20. कार्डलेआउट बनाम जेपीएनल के मैन्युअल जोड़ने/हटाने के बारे में इतना खास क्या है?
- 21. एसवीजी स्क्रॉलिंग प्रदर्शन पीएनजी से इतना बुरा क्यों है?
- 22. के बारे में बताएं Magento संचय सिस्टम
- 23. 787 के बारे में विशेष क्या है?
- 24. `uint64_t` के बारे में इतना मुश्किल क्या है? (`फ्लोट` से रूपांतरण असेंबली)
- 25. पी 2 पी होल पंचिंग के बारे में इतना मुश्किल क्या है?
- 26. नए एमवीसी 2 क्षेत्रों के बारे में इतना अच्छा क्या है?
- 27. 32-बिट परिवर्तनीय 32 बिट्स को स्थानांतरित करने के बारे में क्या बुरा है?
- 28. क्या एक लाइन पर कई आयात होने के बारे में कुछ बुरा है?
- 29. हरे रंग के नीले रंग के रंग के बारे में इतना खास क्या है? वेब डिज़ाइन में यह इतना लोकप्रिय क्यों है?
- 30. जावा वर्चुअल मशीन में कोई जीआईएल क्यों नहीं है? पाइथन को इतना बुरा क्यों चाहिए?
प्लस, जो चीजें लोग 'सिस्टम()' में रखना चाहते हैं, आमतौर पर स्क्रीन को साफ़ करने या रोकने जैसी आम तौर पर इतनी पागल होती हैं। यह कुछ ऐसा करने के आलसी और उप-इष्टतम तरीके के रूप में उपयोग किया जाता है जो वास्तविक कोड में बेहतर होगा। –
यदि आप इसे गलत करते हैं और इसमें असमर्थित उपयोगकर्ता इनपुट पास करते हैं तो आप इंजेक्शन कमजोरियों को कमांड करने के लिए अपना एप्लिकेशन खोलते हैं। एक हमलावर आपके आवेदन के समान विशेषाधिकारों के साथ मनमाने ढंग से आदेश चला सकता है। –
जो भी आप चाहते हैं, अगर आप जानते हैं कि आप क्या कर रहे हैं। – deepmax