read a alarm

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Středa Prosinec 25 13:05:27 CET 2002


On Wed, 18 Dec 2002, sci wrote:

> doufam, ze to neni prilis OT, ale mam tu nejakou potiz se signaly 
> ve spojeni s funkci read. Ta by se mela prerusit pokud proces dostane
> signal (SIGALRM) a v errno by se mel objevit kod EINTR. Nic takoveho se
> ovsem nestane, i kdyz program na signal reaguje. Zkousel jsem to na SCO 
> (nejakem starsim), kde to takto funguje. Muzete mi poradit, co delam
> blbe? Prikladam i src.

Krome jinych problemu (pouziti signal(), ktere v BSD verzi restartuje
syscally) volate v signal handleru fprintf(), coz se nesmi. Presny seznam
knihovnich funkci, ktere jsou reentrantni a zpusobile k tomu byt volany
uvnitr signal handleru, je v SUSv2 (ted nedavno TOG vlastne vydal jeste
nejakou novejsi verzi, ale te nemuzu prijit na jmeno).

Ovsem nebojte se, jste v dobre spolecnosti. Jisty vyznamny RDBMS, jehoz
jmeno zacina na O, ma podobne problemy (tusim, ze s localtime()) a pri
vhodne konstelaci hvezd to vede k peknemu deadlocku. ;)

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux