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