Jedinecnost klice pro fnc shmget

Zdenek Janis zdenek.janis na brajan.cz
Úterý Duben 6 22:22:51 CEST 2004


Jirka Kosina wrote:
> To z principu neni mozne, protoze int ma samozrejme mensi rozsah nez kolik 
> je moznych retezcu, takze musi existovat funkcni hodnoty, do kterych se 
> Vam tech retezcu zobrazi vic.
Ano, to je mi jasne... mel jsem na mysli neco jako je ve windows, kde 
funkci (uz si nepamatuji nazev) predam string a ona si to ulozi nekam do 
globalnich promennych a vrati neco jako ID. Pri opetovnem zavolani z 
jineho procesu to vrati stejne cislo, ale pocet techto jedinecnych cisel 
je omezen.

> Takze si musite vytvorit nejakou (celkem libovolnou, treba soucet ascii 
> hodnot znaku (pripadne nejake to modulo), md5, ...) a volat shmget() s 
> flagy IPC_CREAT | IPC_EXCL abyste byl schopen detekovat ze doslo v 
> hashovaci funkci ke konfliktu a musite spocitat novy hash.
Ovsem v okamziku, kdy si tedy podruhe vygeneruji nejaky cislo, protoze 
to prvni uz existovalo, tak pri pozadavku z jineho procesu, kde budu mit 
stejne klice nutne zkolabuji, protoze mi funkce uspeje hned na prvnim 
cisle ale ta pamet bude nekoho jineho.

Ikdyz asi to bude trosku zamotanejsi, neb jsem si napsal program, kde se 
pokousim "napojit" postupne od 1 do 32000 a dost me udivilo, ze jsem ani 
jednou neuspel...

-- 
S pozdravem
                 Zdenek Janis


Další informace o konferenci Linux