/ / Jak wypisać execvp na pojedynczą linię? - shell, unix, ls, execvp, minix

Jak wypisać execvp w jednym wierszu? - shell, unix, ls, execvp, minix

Potrzebuję pomocy, próbuję utworzyć powłokę w minix3 i chcę utworzyć własne polecenie „ls”, więc w tej chwili używam execvp dowództwo. Jedynym problemem jest to, że chciałbym, aby wszystkie były wyświetlane w pojedynczej linii, a nie w każdym katalogu w ich własnej linii. Od dłuższego czasu próbuję to poprawić i po prostu nie wydaje mi się, żeby to było właściwe. Nie jestem pewien, czy jest to możliwe, czy nie, ale każda rada dotycząca tego, jak osiągnąć ostateczny produkt bez konieczności używania system() byłoby bardzo mile widziane!

Przykład mojego kodu:

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

Dziękuję w zaawansowanym!

Odpowiedzi:

0 dla odpowiedzi № 1

Najłatwiej jest prawdopodobnie potokować wyjście ls do tr. Możesz użyć skomplikowanego kodu, aby skonfigurować potoki, lub możesz wywołać sh zamiast tego skrypt:

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

Lub, jeśli jesteś w porządku z przecinkami między wpisami, podaj -m flaga do ls:

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