2015-08-08 4 views
-1

Мне нужна помощь, я пытаюсь создать оболочку в minix3, и я хочу создать свою собственную команду «ls», поэтому в данный момент я использую команду execvp. Единственная проблема заключается в том, что я бы хотел, чтобы он выводился на одну строку, а не каждый каталог в их собственной строке. Я пытаюсь получить это правильно в течение довольно долгого времени, и я просто не могу понять, как это правильно. Я не уверен, что это возможно или нет, но любые советы о том, как достичь конечного продукта без использования system(), были бы очень признательны!Как вывести execvp в одну строку?

Пример моего кода:

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

Спасибо передовой!

ответ

0

Самый легкий, вероятно, для вывода вывода 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);