Mam małą aplikację powłoki, która osadza Tcl, aby wykonać jakiś zestaw kodu Tcl. Interpreter Tcl jest inicjowany za pomocą Tcl_CreateInterp. Wszystko jest bardzo proste: komenda rodzajeObsługa polecenia wyjścia wykonywanego przez wbudowane środowisko wykonawcze Tcl
- użytkowników Tcl
- polecenie zostanie przekazany do Tcl_Eval oceny
- powtórz
Ale jeśli użytkownik wpisze „exit”, który jest ważny Tcl polecenie, cała sprawa - interpreter Tcl i moja aplikacja powłoki - wyjście automatycznie.
P: czy istnieje sposób, aby złapać ten sygnał wyjściowy pochodzący z interpretera Tcl. Naprawdę nie chciałbym sprawdzać każdego polecenia użytkownika. Próbowałem Tcl_CreateExitHandler, ale to nie zadziałało.
Dziękuję bardzo.
Naprawiono tytuł i usunięto odniesienia do "tcllib", ponieważ znormalizowana biblioteka * dla * Tcl [jest powszechnie znana pod tą nazwą] (http://tcllib.sourceforge.net/). Wydaje się, że to, na co naprawdę masz na myśli, to osadzanie środowiska wykonawczego Tcl w twoim programie. – kostix
'Tcl_CreateExitHandler' służy do wychwytywania wyjść i zwalniania zasobów (np. Połączeń z bazami danych), które w innym przypadku byłyby nieprzyjemne. Nie może powstrzymać wyjścia. –
To jest dokładnie to, co chcę zrobić - zwolnij zasoby przy wyjściu. Dlaczego w tym przypadku nie działa "Tcl_CreateExitHandler"? – ilya1725