������ �������� ����(!) ������������� ����������
|
CIT Forum CD-ROM
|
|
SEMCTL(2)
��������
semctl - �������� ���������� ����������
���������
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semctl (semid, semnum, cmd, arg)
int semid, cmd;
int semnum;
union semun {
int val;
struct semid_ds *buf;
ushort *array;
} arg;
��������
��������� ����� semctl ��������� ��������� �������� ���������� ����������. �������� �������� �����������
semid � semnum. �������� ������������ ��������� ��������� cmd, ������� ������ ���� ����� �� ���������:
- GETVAL
- �������� �������� �������� semval [��. intro(2)].
{��������� ����� �� ������.}
- SETVAL
- ���������� �������� �������� semval ������
arg.val. {��������� ����� �� ���������.} ����� ��������� ���������� ���� ������� �������� semadj,
��������������� ��������� �������� �� ���� ���������, ��������������� ������ 0.
- GETPID
- �������� �������� sempid. {��������� ����� �� ������.}
- GETNCNT
- �������� �������� semncnt. {��������� ����� ��
������.}
- GETZCNT
- �������� �������� semzcnt. {��������� ����� ��
������.}
��������� ������� cmd ������ � ������������� ��������
������� �������� � ��������� ���������:
- GETALL
- ��������� �������� ��������� � ������, �� �������
��������� arg.array. {��������� ����� �� ������.}
- SETALL
- ���������� �������� ��������� ������� ���������
��������� �������, �� ������� ��������� arg.array.
{��������� ����� �� ���������.} ����� ���������
���������� ���� ������� �������� semadj, ��������������� �������� ��������� �� ���� ���������,
��������������� ������� 0.
��������������� ����� ��������� �������:
- IPC_STAT
- ��������� ������� �������� ������� ���� ���������
������, ��������������� � ��������������� semid, �
���������, �� ������� ��������� arg.buf. ���������� ���� ��������� ������������ � intro(2). {��������� ����� �� ������.}
- IPC_SET
- ��������� ��������� ����� ��������� ������, ��������������� � ��������������� semid, ��������������� ��������, ����������� � ���������, �� �������
��������� arg.buf:
sem_perm.uid
sem_perm.gid
sem_perm.mode /* ������ ������� 9 ��� */
��� ������� ����� ����������� ������ ���������,
������� ����� ����������� ������������� ������������, ������ ���� �������������� �����������������, ���� �������� ���� sem_perm.cuid ���
sem_perm.uid � ��������� ������, ��������������� �
��������������� semid.
- IPC_RMID
- ������� �� ������� ������������� ��������, ������������ ��������� semid, ������������� ���������
��������� � ��������������� � ��� ��������� ������. ��� ������� ����� ����������� ������ ���������, ������� ����� ����������� ������������� ������������, ������ ���� �������������� �����������������, ���� �������� ���� sem_perm.cuid ���
sem_perm.uid � ��������� ������, ��������������� �
��������������� semid.
��������� ����� semctl ����������� ��������, ���� ��������� ���� �� ���� �� ��������� �������:
- [EINVAL]
- �������� ��������� semid �� �������� ���������� ��������������� ��������� ���������.
- [EINVAL]
- ����� �������� semnum ������ 0 ��� ��������� �������� sem_nsems.
- [EINVAL]
- ������������ �������� ��������� cmd, ������������ �������.
- [EACCES]
- ��� ���� �� ���������� �������� � ����������� ��������.
- [ERANGE]
- �������� ��������� cmd ����� SETVAL ���
SETALL � ��������, ������� �������������
��������, ������ ����������� ����������� �
�������.
- [EPERM]
- �������� ��������� cmd ����� IPC_RMID ���
IPC_SET � ����������� ������������� ������������ ����������� �������� �� ����� ��
�������������� �����������������, �� �������� ���� sem_perm.cuid ��� sem_perm.uid �
��������� ������, ��������������� � ��������������� semid.
- [EFAULT]
- �������� arg.buf ��������� �� ������� ����������� �������� ��������� ������������.
��. �����
intro(2), semget(2), semop(2).
�����������
��� �������� ���������� ���������� ������ ������������
��������� ��������, � ����������� �� ������� cmd:
GETVAL | �������� �������� semval. |
GETPID | ������������� �������� sempid. |
GETNCNT | �������� semncnt. |
GETZCNT | �������� semzcnt. |
��������� ��������� ���������� ��������� �������� ����� 0.
� ������ ������ ������������ -1, � ���������� errno
������������� ��� ������.