ncurses a SIGWINCH

Cejka Rudolf cejkar na dcse.fee.vutbr.cz
Pátek Listopad 10 10:11:03 CET 2000


Míla Kuchta <mila.kuchta na atlas.cz> wrote:
> No, to by snad nemelo vadit. Pokud prece program dostane signal, tak
> se prepne kontext pri pristim naplanovani na handler toto konkretniho
> signalu a pri pouziti robusniho mechanismu jako sigaction by snad
> nemel byt problem pouze prekreslit okno, nebo ne?

Osobne bych se neodvazil zadne signalove rozhrani oznacovat
za robustni - naopak, vsechna jsou velmi krehka a nachylna na
vyrobeni zbytecne chyby.

Funkce v ncurses urcite nelze povazovat za reentrantni. Co kdyz treba
uprostred nejake ncurses-funkce bude vyvolan signalovy handler a zavola
stejnou (ale i jinou - zalezi na vnitrni stavbe knihovny a libc) funkci?
V takovem pripade pak nemusi program spravne fungovat.

> Ano, to je mi jasne i kdyz to nechapu. Pokud signal odchytavam, tak
> si je musim nastavit sam, pokud ne, tak se nastavuji samy.

Zaklad je dan manualovymi strankami: Knihovna si instaluje
svoji vlastni obsluhu. Pokud to nestaci, bez cteni zdrojovych
kodu knihovny to proste nejde:

Knihovna instaluje vlastni signalovou obsluhu (ktera neprimo zpusobuje
"tak se nastavuji samy"), ale jen v pripade, ze pri inicializaci
knihovny je nastavovana obsluha jako SIG_DFL - tj. nikdo ji nemenil.
V obsluze se nastavuje pro kazdy SCREEN priznak _sig_winch = TRUE.
To je vse. A jelikoz vnitrek struktury SCREEN patri mezi privatni
typy, patrne bud nechate puvodni obsluhu a resize bude fungovat,
nebo nastavite vlastni obsluhu a nebude to dobre.

-- 
Rudolf Cejka   (cejkar na dcse.fee.vutbr.cz;  http://www.fee.vutbr.cz/~cejkar)
Brno University of Technology, Faculty of El. Engineering and Comp. Science
Bozetechova 2, 612 66  Brno, Czech Republic


Další informace o konferenci Linux