मैं एक नियमित रूप से संकलित एप्लिकेशन लिख रहा हूं जिसे एक विशेष फ़ाइल बनाने और उसमें एक मैजिक कुकी लिखने की आवश्यकता है। मैं सीधे एप्लिकेशन से फ़ाइल नहीं लिख सकता, सिस्टम सुरक्षा मॉडल को चाल करने के लिए उन्नत विशेषाधिकारों के साथ एक सहायक उपकरण लॉन्च करने की आवश्यकता है। मैं सहायक उपकरण को किसी भी तर्क की आपूर्ति कर सकता हूं। अब मैं कुछ बहुत ही सरल सिस्टम कमांड चुनना चाहूंगा जो सहायक उपकरण के रूप में काम करेगा और मेरे लिए फाइल बनाएगा। कुछ इस तरह:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
सरल touch
इसे काट नहीं करता है क्योंकि मुझे फ़ाइल में कुकी लिखने की आवश्यकता है, echo
शेल आवरण के बिना एक सरल काम नहीं करता है क्योंकि इसे फ़ाइल को लिखने के लिए पुनर्निर्देशन की आवश्यकता होती है। इस तरह के तुच्छ कार्य को करने के लिए मैं विशेषाधिकारों के साथ शेल को कॉल करने में सहज महसूस नहीं करता। क्या वास्तव में कुछ सरल, विवश सिस्टम कमांड है जो मुझे मेरे लिए फाइल लिखने के लिए कह सकता है?
tee
। धन्यवाद!
/bin/sh -c 'echo magic > /path/to/magic/file'
है जो काम नहीं करता है? यह एक निष्पादन योग्य फ़ाइल और दो तर्क होंगे। आपको अंतिम तर्क को एक स्ट्रिंग (स्प्रिंटफ या समकक्ष के साथ) के रूप में बनाने की आवश्यकता होगी। क्या यह कारण है कि यह आपके लिए काम नहीं करेगा? आपके प्रश्न से ऐसा लगता है जैसे doCommandAsRoot () कमांड को स्ट्रीम करने के लिए इनपुट नहीं लेता है, सही है? अन्यथा आप'cat > /path/to/magic/file'
एक स्ट्रिंग बनाने के बजाय अंतिम तर्क को बदल सकते हैं और डेटा पास कर सकते हैं।