[so] test 6
Lucian Adrian Grijincu
lucian.grijincu at gmail.com
Fri Nov 16 22:49:49 EET 2007
On Nov 16, 2007 10:33 PM, florin chiculita
<the_linux_terrorist at yahoo.com> wrote:
> iarasi intervin... (nesolicitat, ca si data trecuta...)
>
> nu e mai simplu cu usleep ?
> chiar daca usleep e obsolete....
>
O fi mai simplu, dar daca ceva e obsolete te poti astepta sa nu mai
existe de la un pas in colo.
Teoretic ar fi frumos din partea ta sa folosesti variantele noi.
Variantele noi in general sunt adaugate pentru a aduce extinderi,
pentru a specifica chestii ce initial erau prost specificate si pentru
care existau implementari diferite, pentru a creste securitatea
sistemului.
> void usleep(unsigned long usec);
>
> $ cat /usr/include/limits.h | grep ULONG
> # define ULONG_MAX 4294967295UL
>
> usleep( (unsigned long) ms * 1000) sau ceva de genu' ar trebui sa mearga ca
> uns...
>
If only life were that simple.
int usleep(useconds_t usec);
[...snip...]
EINVAL usec is not smaller than 1000000. (On systems where that is
considered an error.)
O fi mergand pe anumite sisteme, dar tu ar trebui sa scrii cod cat mai portabil.
Sunt multe sisteme UNIX-like: Unix, Linux, *BSD (cu toate variantele -
Free, Net, Open, MacOS), Cygwin, AIX, HP-UX, IRIX, MINIX, Solaris,
True64, SCO Unix (nustiu pentur cat timp), Plan 9 from Bell Labs, etc.
si inca multe altele de care nu prea auzi (sunt rutere care au
implementate sisteme de operare proprietare Unix-like stripped-down
... care suporta doar un subset din POSIX, SysV sau alte standarde.)
Mai mult, tu trimiti un ulong unei functii care asteapta un useconds_t
care poate avea dimensiune de doua ori mai mica decat long.
Depinzand de endiannessul masinii pe care rulezi codul vei avea
diferite comporamente, daca sizeof(unsigned long)!=sizeof(useconds_t).
--
Lucian
More information about the so
mailing list