c - Pass a string as standard input to an executable -
मेरे पास अगर मैं प्रोग्राम की स्थिति यह है कि मैं एक प्रोग्राम पर एक लूप का उपयोग करते हुए इनपुट में टाइप कर रहा हूं और निष्पादन योग्य को यह इनपुट के रूप में मानक इनपुट की आवश्यकता है। मैं सही तरीके से यह लगता है कि उदाहरण के लिए: जो आउटपुट करता है: count = read (pipes, buffer, buffsize); और क्या चलाने की कोशिश कर रहा हूँ
printf ("% s", बफर); इसे ठीक से प्रिंट करता है, लेकिन इसके माध्यम से चल रहा है, यह एक अन्य निष्पादन योग्य माध्यम से प्राप्त किया गया है (बफर)।
execl ("/ path", "/ path", बफ़र, नल); या कई अन्य तरीकों से मैंने कोशिश की है,
पथ एक संकलित निष्पादन योग्य है।
execv ("। / Path", STDIN_FILENO) का उपयोग करता है तो निष्पादन योग्य करता है ठीक; / कोड>, लेकिन यह पाइप से नहीं लिया जा रहा है
पथ स्ट्रिंग के रूप में मानक इनपुट की अपेक्षा कर रहा है।
read ( ) , उस पाठ को
execl चल रहा है जो प्रोग्राम में पाठ भेजने के लिए एक पाइप का उपयोग करके (इस प्रोग्राम में कुछ और नहीं करना आवश्यक है), वह तब स्ट्रिंग के साथ निष्पादन योग्य कॉल करने का प्रयास कर रहा है एक
stdin के रूप में। पाइप के माध्यम से आने वाले स्ट्रिंग का एक उदाहरण है
यह एक उदाहरण है । यह उदाहरण है
/ path के लिए मानक इनपुट के रूप में इस्तेमाल होने वाली स्ट्रिंग कैसे प्राप्त कर सकता हूं?
popen () आपके वांछित पाइप खोलने के लिए है निष्पादन योग्य ताकि आप या तो अपने मानक इनपुट के लिए सामान पास कर सकते हैं या अपने मानक आउटपुट से सामग्री पढ़ सकते हैं।
#define _POSIX_C_SOURCE 200809L #include & lt; stdio ज & gt; # शामिल करें & lt; stdlib.h & gt; Int मुख्य (शून्य) {FILE * p = popen ("/ bin / cat", "w"); अगर (! पी) {दर्पण ("त्रुटि खोलने पाइप"); वापसी EXIT_FAILURE; } Fputs ("मुझे / bin / cat \ n", p के माध्यम से इको); अगर (पक्लोस (पी) == -1) {दर्पण ("त्रुटि समापन पाइप"); वापसी EXIT_FAILURE; } वापसी 0; }
paul @ thoth: ~ / src / sandbox $ ./testpopen मुझे / bin / cat paul @ thoth के माध्यम से इको: ~ / Src / sandbox $
Comments
Post a Comment