|
��������
semop - �������� ��� ���������� ���������
���������
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semop (semid, sops, nsops); int semid; struct sembuf **sops; unsigned nsops;
��������
��������� ����� semop ������������ ��� ���������� ������ �������� ��� ���������� ���������, ��������������� �
��������������� semid. �������� ��������� sops ��������
���������� �� ������ ��������, ����������� ��������
(��. ��������). �������� ��������� nsops ����� ���������� �������� � �������. ������ ���������, ����������� ��������, �������� ��������� ����:
short sem_num; /* ����� �������� */ short sem_op; /* �������� ��� ��������� */ short sem_flg; /* ����� �������� */
������ ��������, ����������������� ��������� sem_op, ����������� ��� ��������������� ���������, �������� ���������� semid � sem_num.
�������� ���� sem_op ������������� ���� �� ���� ��������:
�������� semval ���������� ������� ��� ������ ���������� �������� sem_op. ����� ��� ����������, �� ��������������� ��������� �������� �������� semncnt ����������� �� 1, ���������� �������� sem_op ���������� �� �������� semval �, ���� ��������� (sem_flg & IPC_UNDO) �������, ���������� �������� sem_op ����������� � �������� semadj ����������� �������� ��� ��������� ��������.
������������� ��������� ���������, ��� ������� ���������� ������� ��������� ��������, ��������� �� ������� [��. semctl(2)]. ����� ��� ����������, ���������� errno ������������� �������� EIDRM � ����������� �������� ������������ -1.
���������� ������� �������� ������, ������� ������ ���� ���������. ����� ��� ����������, �������� semncnt, ��������������� ��������� ��������, ����������� �� 1 � ���������� ������� ������������ ���������� ���, ��� ������� � signal(2).
�������� semval ���������� ������ ����. ����� ��� ����������, �� ��������������� ��������� �������� �������� semzcnt ����������� �� 1.
������������� ��������� ���������, ��� ������� ���������� ������� ��������� ��������, ��������� �� �������. ����� ��� ����������, ���������� errno ������������� �������� EIDRM � ����������� �������� ������������ -1.
���������� ������� �������� ������, ������� ������ ���� ���������. ����� ��� ����������, �������� semzcnt, ��������������� ��������� ��������, ����������� �� 1 � ���������� ������� ������������ ���������� ���, ��� ������� � signal(2).
��������� ����� semop ����������� ��������, ���� �� ������� ���� ��� ����� �������� �� ������ ��������� ���� �� ���� �� ��������� �������:
��� �������� ���������� ���������� ������ �������� sempid ��� ������� ��������, ��������� �������� ��������, �� ������� ��������� sops, ��������������� ������ �������������� (������) ����������� ��������.
��. �����
exec(2), exit(2), fork(2), intro(2), semctl(2),
semget(2).
�����������
���� ��������� ����� semop ����������� �������� ��-��
��������� �������, �� ����������� �������� ������������
-1, � ���������� errno ������������� �������� EINTR.
���� ��������� ����� semop ����������� �������� ��-��
�������� �� ������� �������������� ��������� ���������
semid , �� ������������ -1 � errno ������������� �������� EIDRM.
��� �������� ���������� ��������� ����� 0; � ������ ������ ������������ -1, � ���������� errno ������������� ��� ������.
��������
� ������ ���������� �������� sops ������ ���� ��������
��������, � �� ���������� �� ������.
|