openpty() problem

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Neděle Duben 9 20:55:21 CEST 2006


On Thu, 6 Apr 2006, Dalibor Toman wrote:

> Btw: Dival jsem se do zdrojaku openpty() a spol a zda se mi, ze z 
> hlediska osetreni chyb to neni uplne dobre napsano - nejak mi tam 
> chybi nastavovani errno v nekterych pripadech (kdyz getpt() zjisti, ze 
> jsou nejake problemy s /dev/pts atd).

Pak tam zůstane právě chyba, co nastala např. uvnitř toho getpt().
Jestli je to smysluplné, nebo ne, na to lze mít různé názory.

> Ale mozna mi (doufam) neco uniklo, jinak by to reportovane 'No such 
> fil or directory' mohlo byt ponekud zavadejici...

Zrovna ENOENT je dokumentovaný stav znamenající, že nejsou žádné volné 
pty. Má to svou vnitřní BSDčkovou logiku vyplývající z toho, že 
__bsd_getpt() projíždí všechna možná jména zařízení, a když narazí na 
neexistující jméno, tak skončí.

V našem případě to pravděpodobně znamená, že __posix_openpt() z nějakého 
neznámého důvodu selhalo, tak to zkusilo __bsd_getpt(), které selhalo 
taky. Ale v errno může být jen jedna chyba.

--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