मुझे मदद की ज़रूरत है, मैं 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);