/ / Implementowanie podpowłoki w c-c, shell, unix, posix

Implementacja podpowłoki w c - c, shell, unix, posix

Zaimplementowałem bash jak shell w języku C. Popieram < > >> ; | i &. Moim następnym zadaniem jest dodanie wsparcia dla ( i ) w zasadzie podpowłoka. Jak możemy wdrożyć podpowłokę. Potrafię rozwidlać i nadpisywać element nadrzędny, przekazywać zmienne środowiskowe, ale muszę dodać obsługę takich poleceń (ls | sort) ; ls (Przyznaję, że polecenie nie ma większego sensu, ale wyjaśnia motyw)

Każda pomoc jest doceniana.

Odpowiedzi:

0 dla odpowiedzi № 1

Aby to zrealizować, analizujemy wiersz poleceń i tworzymy strukturę przypominającą drzewo. Można to zrobić za pomocą lex i yacc i jak sugeruje barmer, możemy nazwać każdy węzeł jako subshell pipeline semicolon. Po parsowaniu całej linii poleceń przekaż wskaźnik do całego węzła do programu głównego. Aby uruchomić podpowłokę fork a następnie ponownie załaduj ten sam program za pomocą execve przekazywanie obecnego środowiska.