का उपयोग करने के बीच अंतर बाइनरी निष्पादित करने और फोर्क/execvp के संयोजन का उपयोग करने के लिए सिस्टम() का उपयोग करने के बीच क्या अंतर है।फोर्क/execvp और सिस्टम कॉल
क्या कोई सुरक्षा/पोर्टेबिलिटी/प्रदर्शन अंतर है।
का उपयोग करने के बीच अंतर बाइनरी निष्पादित करने और फोर्क/execvp के संयोजन का उपयोग करने के लिए सिस्टम() का उपयोग करने के बीच क्या अंतर है।फोर्क/execvp और सिस्टम कॉल
क्या कोई सुरक्षा/पोर्टेबिलिटी/प्रदर्शन अंतर है।
सिस्टम fork
/exec
... संयोजन का भी उपयोग करता है। यदि आप fork
/exec
स्वयं करते हैं तो आप अपनी चल रही प्रक्रिया के समानांतर निष्पादित कर सकते हैं, जबकि system
अवरुद्ध है (wait
भी शामिल है)। भी system
कमांड को सीधे नहीं निष्पादित करता है, लेकिन एक खोल के माध्यम से (जो सेटयूड बिट के साथ समस्याएं बनाता है) और system
ब्लॉक/कुछ संकेतों को अनदेखा करता है (सिगिनट, सिग्चिल, सिगक्विट)।
हां, system()
एक खोल के माध्यम से आदेश चलाता है, जबकि exec()
सीधे आदेश चलाता है। बेशक, एक खोल शुरू करना बग और शोषण के लिए खुलता है।
संपादित करें: ज़ाहिर है, the man page अधिक जानकारी प्रदान करता है।
सिस्टम() विंडोज पर काम करता है लेकिन कांटा() नहीं करता है।
जब तक आप सिग्विन जैसी संगतता परत का उपयोग नहीं करते हैं, तब भी एक कांटा बहुत महंगा हो सकता है।
प्रश्न लिनक्स/यूनिक्स टैग किया गया है, इसलिए एक विंडोज़ उत्तर उपयोगी नहीं है ... –
@ नाथन, सवाल पोर्टेबिलिटी मतभेदों का उल्लेख करता है, जो यह है। – finnw
मेरे पास व्यय के मुद्दे पर एक प्रश्न है, फोर्क सिस्टम की तुलना में अधिक महंगा है। सिस्टम भी एक प्रक्रिया को फोर्क करता है, इसके बजाय यह दो प्रक्रियाओं को फोर्क करता है। – foo
वहाँ भी popen है() है, जो) प्रणाली (तरह है, लेकिन बच्चे के उत्पादन
system()
होगा fork()
/exec()
खोल पढ़ सकते हैं और इनपुट प्रदान करने की अनुमति देता है, और उसके बाद शैल fork()
/exec()
कार्यक्रम आप करना चाहते हैं प्रक्षेपण।
तो system()
दो बार के रूप fork()
/exec()
"को मिला एक खोल कीड़े और कारनामों के लिए खुल जाता है" के रूप में भारी है - केवल अगर आप एक व्यक्ति आदेशों टाइप करने के लिए अनुमति देते हैं। यदि आपका एप्लिकेशन शेल कमांड के पाठ को उत्पन्न करता है, तो शोषण की कोई संभावना नहीं है। –
एक संभावना यह है कि यदि उपयोगकर्ता आपके कोड को निष्पादित करने से पहले कुछ शैल चर बदलता है। शोषण की संभावना है, लेकिन यह सुनिश्चित नहीं है कि यह कितना सामान्य है। – foo
आपके पास पथ/लिंकर चाल भी हैं। [लिंक तोड़ना: लिंकर का विस्फोट] (http://www.nth-dimension.org.uk/pub/BTL.pdf)। – jww