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