open a errno
Robert Vojta
robert na v0jta.net
Středa Srpen 29 11:23:39 CEST 2001
> errno se nastavuje jenom pri chybe, kdyz chyba nenastane, tak se v nem
> zachova puvodni hodnota. Takze je treba errno vynulovat predem. Pozor na
> to, ze kazde vlakno ma vlastni errno, takze je treba ho vynulovat v kazdem
> vlakne zvlast. Viz man errno(3):
Proc by jste mel to errno nulovat? To je uplne zbytecne, spravny postup ...
int fd;
if ((fd = open("file", O_RDWR)) == -1)
{
// ted se muzete podivat do errno
return;
}
Kdyz ho totiz budete nulovat a kontrolovat potom jenom errno, tak se Vam
muze stat, ze jednou zapomenete errno zkontrolovat, pak ho zkontrolujete
u jine funkce, ktera probehla OK a kdyz to errno bude nastavene z te predchozi
funkce budete si myslet, ze chyba je uplne nekde jinde ... Priklad co myslim...
int fd1, fd2;
errno = 0;
fd1 = open("file1", O_RDWR);
fd2 = open("file2", O_RDWR);
if (errno)
{
// tak tady nevite cim to je a ty open nemusi byt za sebou, muze to
// byt od sebe na hony vzdalene a jakmile jenom jednou zapomenete
// tak uz jste v ...
}
Takze Vam doporucuju, errno nenulovat, nechat ho takovy jaky je a kontrolovat
ho v pripade, ze Vam vami zavolana funkce vrati chybu, tzn. postup jako v
tom priklade uplne nahore ...
S pozdravem,
--Robert V0jta
--
_
|-| __ Robert Vojta (robert-at-v0jta-net)
|=| [Ll] http://www.v0jta.net/
"^" ====`o
------------- další část ---------------
A non-text attachment was scrubbed...
Name: [žádný popis není k dispozici]
Type: application/pgp-signature
Size: 240 bytes
Desc: [žádný popis není k dispozici]
URL: <http://www.linux.cz/pipermail/linux/attachments/20010829/4eddf1db/attachment.sig>
Další informace o konferenci Linux