Пишу интерактивную оболочку к интерпретатору ЯП (aka repl/toplevel/interactive shell/...). Как сделать консольный вариант - ясно, не понятно как совместить цикл интерпретатора toplevel() с gtk_main(). Из toplvel() наружу торчат две переопределяемые функции для работы с входным/выходным потоками, которые по поведению должны совпадать с read(2)/write(2) соответственно. При этом хочется, чтобы, в то время как интерпретатор что-то там пережевывает, интерфейс не блокировался и можно было, скажем, прибить зациклившуюся программу.
Наверно надо смотреть в сторону многопоточности, но я с этим дел не имел до этого. Может можно как-то попроще? Ну и, вообще, я несколько в растерянности, посоветуйте чего-нибудь.