Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
shmctl - sterowanie segmentami pamici wspolnej
SK/LADNIA
#include <sys/ipc.h>
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
OPIS
shmctl() pozwala uytkownikowi pobiera informacje dotyczce segmentu
pamici wspolnej, zmienia wlaciciela, grup i prawa dostpu do tego
segmentu oraz usun segment. Informacje dotyczce segmentu okrelonego
przez shmid zwracane s w strukturze shmid_ds zdefiniowanej nastpujco:
struct shmid_ds {
struct ipc_perm shm_perm; /* prawa dostpu */
int shm_segsz; /* rozmiar segmentu (w bajtach) */
time_t shm_atime; /* czas ostatniego dolczenia */
time_t shm_dtime; /* czas ostatniego odlczenia */
time_t shm_ctime; /* czas ostatniej modyfikacji */
unsigned short shm_cpid; /* PID tworcy segmentu */
unsigned short shm_lpid; /* PID ostatniego operatora segmentu */
short shm_nattch; /* liczba dolcze */
...
};
Mona nada warto wyronionym polom struktury shm_perm opisujcej prawa
dostpu:
struct ipc_perm
{
key_t key;
ushort uid; /* euid oraz egid w/laciciela segmentu */
ushort gid;
ushort cuid; /* euid oraz egid tworcy segmentu */
ushort cgid;
ushort mode; /* 9 najmniej znaczcych bitow praw dostpu */
ushort seq; /* numer porzdkowy */
};
Nastpujce polecenia mog by przekazane za pomoc parametru cmd :
IPC_STAT sluy do kopiowania informacji o segmencie pamici wspolnej
do bufora buf. Uytkownik musi mie prawo do odczytu segmentu
pamici wspolnej.
IPC_SET sluy do modyfikacji praw dostpu do segmentu. Z pola
shm_perms struktury wskazanej przez parametr buf pobierane
s uid, gid i mode. System uwzgldnia tylko 9 najmniej
znaczcych bitow parametru mode. Polu shm_ctime
przypisywane jest aktualny czas. Uytkownik musi by
wlacicielem segmentu, jego tworc lub administratorem
systemu.
IPC_RMID sluy do zaznaczenia segmentu do usunicia. Zostanie on
naprawd usunity w momencie, gdy wszystkie procesy odlcz si.
(Tj. gdy pole shm_nattch struktury shmid_ds opisujcej
segment osignie warto zero.) Uytkownik musi by wlacicielem
segmentu, jego tworc lub administratorem systemu.
Uytkownik musi zapewni, e segment po uyciu zostanie na pewno usunity. W
przeciwnym przypadku, pami lub obszar wymiany zajmowane przez segment
nie zostan zwolnione.
Dodatkowo, administrator systemu moe zabroni lub zezwoli na wymian
obszarow pam ici zajmowanych przez segment (tylko w systemie Linux).
Slu do tego nastpujce wartoci cmd:
SHM_LOCK zabezpiecza segment pamici wspolnej przed wymian. Strony,
ktore wczeniej ulegly wymianie zostan ponownie zaladowane
do pamici dopiero w momencie, gdy uytkownik wykona do nich
dostp.
SHM_UNLOCK zezwala na wymian stron nalecych do segmentu pamici
wspolnej.
Polecenia sterujce IPC_INFO, SHM_STAT oraz SHM_INFO s uywane przez
program ipcs(8) do pobierania informacji o uywanych zasobach w
systemie. Jeli zajdzie potrzeba, polecenia te mog w przyszloci ulec
zmianie lub ich obsluga moe zosta zawarta w systemie plikow /proc.
WARTO ZWRACANA
Funkcja zwraca 0, jeli operacja zakoczy si pomylnie, a -1, gdy wystpi
bld.
B/LDY
W przypadku wystpienia bldu, zmiennej errno przypisana zostanie jedna z
poniszych wartoi:
EACCES jeli wydano polecenie IPC_STAT, a prawa dostpu okrelone w
shm_perm.modes nie pozwalaj na odczyt segmentu shmid.
EFAULT Parametr cmd ma warto IPC_SET lub IPC_STAT, ale adres
wskazany przez buf jest niedostpny.
EINVAL jeli shmid nie jest poprawnym identyfikatorem segmentu lub
cmd nie jest poprawnym poleceniem.
EIDRM jeli shmid_ds wskazuje na segment, ktory zostal usunity.
EPERM jeli uytkownik probowal wywola polecenie IPC_RMID lub
IPC_SET, ale efektywny UID wlaciciela procesu wywolujcego
funkcj nie odpowiada tworcy segmentu (okrelonemu w
shm_perm.cuid), wlacicielowi segmentu (okrelonemu w
shm_perm.uid), ani administratorowi systemu.
EOVERFLOW jest zwracane, gdy wydano polecenie IPC_STAT, a warto gid
lub uid jest za dua, aby j umieci w strukturze wskazywanej
przez buf.
UWAGA
Niektore pola struktury struct shmid_ds byly w Linuksie 2.2 typu short
a staly si typu long w Linuksie 2.4. Aby to wykorzysta, powinna
wystarczy rekompilacja pod glibc-2.1.91 lub nowsz. (Jdro rozronia
stare i nowe wywolania za pomoc znacznika IPC_64 w cmd.)
ZGODNE Z
SVr4, SVID. SVr4 dokumentuje dodatkowe kody bldow: EINVAL, ENOENT,
ENOSPC, ENOMEM, EEXIST. Ani SVr4 ani SVID nie dokumentuj kodu bldu
EIDRM.
ZOBACZ TAKE
shmget(2), shmop(2)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.