Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

SEMOP(2)

��������
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 ������������� ���� �� ���� ��������:

  1. ���� �������� sem_op ������������, �� ����������� ���� �� ��������� �������� {��������� ����� �� ���������.}:
  2. ���� �������� sem_op ������������, �� ��� ����������� � �������� semval �, ���� ��������� (sem_flg & SEM_UNDO) �������, �������� sem_op ���������� �� �������� semadj ����������� �������� ��� ��������� ��������. {��������� ����� �� ���������.}
  3. ���� �������� sem_op ����� ����, ����������� ���� �� ��������� �������� {��������� ����� �� ������}:

��������� ����� semop ����������� ��������, ���� �� ������� ���� ��� ����� �������� �� ������ ��������� ���� �� ���� �� ��������� �������:

[EINVAL]
�������� ��������� semid �� �������� ���������� ��������������� ��������� ���������.
[EFBIG]
����� �������� sem_num ������ ���� ��� ������ ��� ����� ���������� ��������� � ���������, ������������ ��������������� semid.
[E2BIG]
���������� �������� �������� nsops ������ ����������� ����������� � �������.
[EACCES]
� ����������� �������� ��� ���� �� ���������� �������� [��. intro(2)].
[EAGAIN]
���������� �������� ������� �� � ������������ ����������� ��������, � ��������� (semflg & IPC_NOWAIT) �������.
[ENOSPC]
����������� ����������� ���������� ���������� ���������, ��������������� ���� SEM_UNDO.
[EINVAL]
����������� ����������� ���������� ���������� ���������, ��� ������� ���������� ������� ������������� ���� SEM_UNDO.
[ERANGE]
�������� �������� semval ��������� ����������� ���������� ��������.
[ERANGE]
�������� semadj ��������� ����������� ���������� ��������.
[EFAULT]
�������� sops ��������� �� ������� ����������� �������� ��������� ������������.

��� �������� ���������� ���������� ������ �������� 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 ������ ���� �������� ��������, � �� ���������� �� ������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT