/ / मैं एक एकल पंक्ति पर कैसे निष्पादित करूं? - शेल, यूनिक्स, एलएस, एग्जाम्पल, मिनिक्स

मैं एक लाइन पर execvp आउटपुट कैसे करूं? - खोल, यूनिक्स, एलएस, execvp, minix

मुझे मदद की ज़रूरत है, मैं minix3 में एक शेल बनाने की कोशिश कर रहा हूं, और मैं अपना खुद का "एलएस" कमांड बनाना चाहता हूं, इसलिए फिलहाल मैं इसका उपयोग कर रहा हूं execvp आदेश। एकमात्र समस्या यह है कि मैं इसे अपनी लाइन पर प्रत्येक निर्देशिका के बजाय एक ही लाइन पर सभी आउटपुट के लिए चाहूंगा। मैं काफी समय से इसे सही करने की कोशिश कर रहा था और मुझे यह सही नहीं लग रहा था। मुझे यकीन नहीं है कि यह संभव है या नहीं लेकिन किसी भी सलाह का उपयोग करने के बिना अंतिम उत्पाद कैसे प्राप्त करें system() बहुत सराहना की जाएगी!

मेरे कोड का उदाहरण:

char* arg[] = {"ls", "-1", NULL};
execvp(arg[0], arg);

अग्रिम धन्यवाद!

उत्तर:

जवाब के लिए 0 № 1

सबसे आसान शायद के आउटपुट को पाइप करना है ls सेवा मेरे tr। आप पाइपलाइन स्थापित करने के लिए जटिल कोड का उपयोग कर सकते हैं, या आप आह्वान कर सकते हैं sh इसके बजाय एक स्क्रिप्ट के साथ:

char const* args[] = {"sh", "-c", "ls | tr "n" " "", NULL};
execvp(args[0], args);

या यदि आप प्रविष्टियों के बीच अल्पविराम के साथ ठीक हैं, तो पास करें -m झंडा ls:

char const* args[] = {"ls", "-m", NULL};
execvp(args[0], args);