������ �������� ����(!) ������������� ����������
|
CIT Forum CD-ROM
|
|
MSGOP(2)
��������
msgop - �������� ��� �������� ���������
���������
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgsnd (msqid, msgp, msgsz, msgflg)
int msqid;
struct msgbuf *msgp;
int msgsz, msgflg;
int msgrcv (msqid, msgp, msgsz, msgtyp, msgflg)
int msqid;
struct msgbuf *msgp;
long msgtyp;
int msgsz, msgflg;
��������
������� ���������
��������� ����� msgsnd ������������ ��� ����, ����� ��������� ��������� � �������, ��������������� � ��������������� ������� msqid. {��������� ����� �� ������.}
�������� msgp �������� ���������� �� ���������, ���������� ���������. ��������� �������� ��������� ����:
long mtype; /* ��� ��������� */
char mtext []; /* ����� ��������� */
���� mtype �������� ������������� ����� �����, �������
����� �������������� ���������-����������� ��� ������
��������� (��. ���� �������� ���������� ������ msgrcv).
���� mtext �������� ����� ������ msgsz ����. ��������
msgsz ����� ��������� �������� �� 0 �� ��������������
�������� ������.
�������� msgflg ������������� ��������, ���������������, ���� ��������� ���� �� ���� �� ��������� �������:
- ������� ���������� ���� � ������� ��� ����� �������� ���� msg_qbytes ��������������� ��������� ������ [��. intro(2)].
- ����� ���������� ��������� �� ���� �������� ������� ����� ����������� ����������� ��������.
��������, ��������������� ���������� msgflg, ���������:
- ���� ��������� (msgflg & IPC_NOWAIT) �������, ��
��������� �� ���������� � ����������� ��������
����� �� ������������ ����������.
- ���� ��������� (msgflg & IPC_NOWAIT) �����, �� ���������� ����������� �������� ������������� �� ���
���, ���� �� ���������� ���� �� ��������� �������:
- �������, ������������ �������� ��������, ��������� ������������; � ���� ������ ���������� ���������.
- ������������� ������� ��������� msqid ��������� �� ������� [��. msgctl(2)]; � ���� ������ errno ������������� �������� EIDRM � �
�������� ���������� ������������ -1.
- ���������� ������� �������� ������, �������
������ ���� ���������; � ���� ������ ��������� �� ���������� � ���������� ������� ���������� ���������� ���, ��� ������� �
signal(2).
��������� ����� msgsnd ����������� �������� � ���������
�� ����������, ���� ��������� ���� �� ���� �� ���������
�������:
- [EINVAL]
- ������������� ������� ��������� msqid ��
�������� ����������.
- [EACCES]
- � ����������� �������� ��� ���� �� ���������� �������� [��. intro(2)].
- [EINVAL]
- �������� ���� mtype ������ 1.
- [EAGAIN]
- ��������� �� ����� ���� ������� �� �����
���� �� ��������� ���� ������, � ���������
(msgflg & IPC_NOWAIT) �������.
- [EINVAL]
- �������� ��������� msgsz ������ 0 ��� ������ ����������� ����������� � �������.
- [EFAULT]
- �������� msgp ��������� �� ������� ����������� �������� ��������� ������������.
��� �������� ���������� ������ ��� ���������� ������,
��������������� � ��������������� msqid, ������������
��������� �������� [��. intro(2)]:
- �������� ���� msg_qnum ������������� �� 1.
- �������� ���� msg_lspid ��������������� ������
�������������� (������) ����������� ��������.
- �������� ���� msg_stime ��������������� ������ �������� �������.
����� ���������
��������� ����� msgrcv �������� ��������� �� �������,
��������������� � ��������������� ������� msqid, � �������� ��� � ���������, �� ������� ��������� ��������
msgp. {��������� ����� �� ������.} ��� ��������� ������� �� ��������� �����:
long mtype; /* ��� ��������� */
char mtext []; /* ����� ��������� */
���� mtype �������� ��� ����������� ���������, �������
��������������� ���������� ���������. ���� mtext �������� ����� ���������. �������� ��������� msgsz ���������� ������ ������ � ������. ���������� ��������� ���������� �� msgsz ����, ���� ��� ����� ��������� msgsz �
��������� (msgflg & MSG_NOERROR) �������. �����������
����� ��������� ��������� � ���������� ������� �� �������� �������� ����������� �� ���������.
�������� msgtyp ������������� ��� �������������� ��������� � ������������ �� ���������� ������������:
- ���� �������� msgtyp ����� 0, ��������� ������ ��������� � �������.
- ���� �������� msgtyp ������ 0, ��������� ������
��������� ���� msgtyp.
- ���� �������� msgtyp ������ 0, ��������� ������
��������� ����������� �� �����, ������� ������ ���
����� ���������� �������� ��������� msgtyp.
�������� msgflg ������������� ��������, ���������������
� ��� ������, ���� � ������� ��� ��������� ������� ����. ��� �������� ���������:
- ���� ��������� (msgflg & IPC_NOWAIT) �������, ��
���������� ������� ����� �� �������� ����������,
��� ������������ -1 � errno ������������� ��������
ENOMSG.
- ���� ��������� (msgflg & IPC_NOWAIT) �����, �� ���������� ����������� �������� ������������������
�� ��� ���, ���� �� ���������� ���� �� ���������
�������:
- � ������� ���������� ��������� ������� ����.
- ������������� ������� ��������� ��������� ��
�������; � ���� ������ ������������ -1 �
errno ������������� �������� EIDRM.
- ���������� ������� �������� ������, �������
������ ���� ���������; � ���� ������ ��������� ��������� �� ���������� � ���������� ������� ������������ ���������� ���, ��� �������
� signal(2).
��������� ����� msgrcv ����������� �������� � ���������
�� �����������, ���� ��������� ���� �� ���� �� ��������� �������:
- [EINVAL]
- �������� ��������� msgid �� �������� ���������� ��������������� ������� ���������.
- [EACCES]
- � ����������� �������� ��� ���� �� ���������� ��������.
- [EINVAL]
- �������� ��������� msgsz ������ 0.
- [E2BIG]
- ������ ��������� ������ msgsz � ���������
(msgflg & MSG_NOERROR) �����.
- [ENOMSG]
- ������� �� �������� ��������� ������� ����
� ��������� (msgflg & IPC_NOWAIT) �������.
- [EFAULT]
- �������� msgp ��������� �� ������� ����������� �������� ��������� ������������.
��� �������� ���������� ������ ��� ���������� ������,
��������������� � ��������������� msqid, ������������
��������� �������� [��. intro(2)]:
- �������� ���� msg_qnum ����������� �� 1.
- �������� ���� msg_lrpid ��������������� ������
�������������� (������) ����������� ��������.
- �������� ���� msg_rtime ��������������� ������ �������� �������.
��. �����
intro(2), msgctl(2), msget(2), signal(2).
�����������
���� ��������� ���� ��������� ������ ����������� �������� ��-�� ��������� �������, �� ����������� ��������
������������ -1, � ���������� errno ������������� �������� EINTR. ���� ��������� ������ ����������� ��������
��-�� �������� �� ������� �������������� ������� msqid,
�� ������������ -1 � errno ������������� ��������
EIDRM.
��� �������� ���������� ��������� ������� ������������
��������� ��������:
- Msgsnd ���������� 0.
- Msgrcv ���������� ��������, ������ ����������
����, ������������� ���������� � ���� mtext.
� ���� ������� ������������ -1, � ���������� errno
������������� ��� ������.