Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� 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 ������������� ��� ������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT