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 № 1Aby 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.