2011-08-22 3 views
5

मैं गिरी से उपयोगकर्ता क्षुधा लागू पर इस महान दस्तावेज़ का पालन किया है: http://www.ibm.com/developerworks/linux/library/l-user-space-apps/index.htmlcall_usermodehelper/call_usermodehelperpipe उपयोग

लेकिन अब मैं कैसे क्षुधा रन कर दिया गया है कि से उत्पादन प्राप्त करने के लिए इच्छुक हूँ। मैं पुनर्निर्देशन ऑपरेटरों में गुजर की कोशिश की एक फाइल करने के लिए उत्पादन में लिखने के लिए .. उदाहरण के लिए:

char *argv[] = { "/usr/bin/ls", ">>", "/tmp/list", NULL}; 
call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); 

ऐसा कोई भाग्य। मैं call_usermodehelperpipe पर आया और मुझे आश्चर्य हुआ कि क्या मैं इसके बाद क्या करूँगा, लेकिन मैं इसे समझने में सक्षम नहीं हूं कि इसका उपयोग कैसे किया जाए या उपर्युक्त किसी भी दस्तावेज को ढूंढें।

सुझाव/सहायता के लिए अग्रिम धन्यवाद!

उत्तर

2

आप ऐसा करने के लिए usermodehelper कोड का उपयोग नहीं कर सकते हैं, क्योंकि यह केवल एक पाइप से जुड़े stdin के साथ एक प्रक्रिया चलाने का समर्थन करता है।

stdin के अतिरिक्त stdout को ओवरराइड करने के लिए ____call_usermodehelper को बदलने के लिए आप इसकी कार्यक्षमता को डुप्लिकेट कर सकते हैं।

4

>>ls के लिए कोई तर्क नहीं है, यह खोल से कुछ है। इसे /bin/sh -c "ls >> /tmp/list" (खोल में) का उपयोग करके पार्स किया जा सकता है। सी में, यह है:

char *argv[] = { "/bin/bash", "-c", "/bin/ls >> /tmp/list", NULL};