open a errno

Stepan Roh stepan na srnet.cz
Úterý Srpen 28 14:18:28 CEST 2001



On Tue, 28 Aug 2001, Martin Kozusky wrote:

> Ahoj,
> hraju si z threadama (pthreads), uz mi  vse co potrebuji chodi, ale stale mi
> vrta hlavou promena "errno" pri otevirani souboru - potrebuji aby si kazdy
> thread otevrel soubor (kazdy jiny). v main() to funguje normalne, ale v
> threadu ne.
>
> pouzivam na to fce open/write/close
>
> mam :
> int soubor;
> extern long int errno;
> soubor=open(cesta,O_WRONLY | O_CREAT | O_APPEND, 00644)
>
> v errno to vrati 4 (v <asm/errno.h> jsem nasel ze je to "Interupted System
> call"). nevite cim to muze byt?
>
> soubor se normalne vytvori, ale errno by prece melo byt 0 nebo ne?

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

       Valid  error  numbers are all non-zero; errno is never set
       to zero by any library  function.

S pozdravem,

Stepan Roh



Další informace o konferenci Linux