������� | ������ ������� |
����� | ���������� | ������ |
������� �����/������ �� �������� ������ ����. ������������� ��������� �����/������ ����������� ����������� ��� ������ �������. ��������� �������� ������� QNX �������� �������������� ���������, �� ������������ ��������� ���� �� ��������, ��� � ����������� ���������� ������������ ������, ������ �������� �������.
� ������� QNX ������������ ��������� ���� ��������� �� ������� ����������. ����� �������, ����������� ����-�������������� ������������ �����/������, ������������ � �������������� ��������� ���� �������, ��������� ����� ������������ ����, � ������� �� ���������� �������� (�.�. ������� ����� ����������). ��� �������� �������� ������ ���������, ������� �������� � ������ ������� ����������, ������������ �������� QNX.
��� �������� �����, ��� ��������� ��� �������������� � ������� ��������� ��� ����, ����� ��������� ������ open() � ���������������� �������������� �������� �����/������. ��������, ������������� ��������� (Dev) ������ ������������ ������� /dev. ���� ������� �������� ������� open(), ������� /dev/xxx, �� � ���������� ���������� ������ ���������� ����� � ��������� /dev, ������ open() ����� ��������� � �������������� Dev (���������). ������ ��������� ����� ��������� �������� ��������������� ������� ����������. � ���� ������ ����� �������������� �� �������� ����������� ����������. ��������, �����������, ��� ������� ��� ������������������ ��������:
4.1.1. �������� � ������� ����������
4.2. ��������� �����
4.2.1. �������� �������������� �����/������
/ | �������� ������� �� ����� (Fsys); |
/dev | ������� ���������� ��������� (Dev); |
/dev/hd0 | �������� ��� (Fsys). |
������������� �������� ������� ��������������� ��� �������� - ���� ��� �������������� �������� ������� QNX (/), � ���� ��� ����-���������������� ������������ �����, ������� ������������ ������� ���������� ������� ���� (/dev/hd0). ������������� ��������� ��������������� ���� �������.
���� � ������� �������� ������ ����������� ���������������� �������������� �� �������� ����������� ����������.
��������� ����� | ��������� | ���������� � |
/dev/con1 | /dev | Dev |
/dev/hd0 | /dev/hd0 | Fsys |
/usr/dtdodge/test | / | Fsys |
������ ��������� ������������ ����� ������ ���������, ����������� �����������, ��� �������� ����
prefix=pid,unit:prefix=pid,unit:prefix=pid,unit
pid | - ��� ������������� �������� ��� �������������� �������� �����/������; |
unit | - ��� ������������ �����, ����������� �������� ���� �� ���������� ��������� ���������, ������� ����� �������������. |
� ���������� �������, ���� Fsys - ��� ������� 3, � Dev - ������� 5, �� ������ ��������� ��������� ����� �� ��������� ���
/dev/hd0=3, a:/dev=5, �:/=3,�
���� ��� ����� | �������������� |
���������� �� ������ ������ ��������� | �������� prefix |
�������� ������ � ������ ��������� �� ��-��������� | �������� qnx_prefix_query() |
� ������� QNX ������� ������� ���������� ��� �������� �����, ������������� �������� ��������� �������� ��������� �����, ����� ������ ��������� ����������� ����. ������� ������ �������� ����� �������, �� �������� ������� ����� ����. ��������� ������� ������, ����� ����� �������� ������ � ������ � �����������, ������� �� ������ � ������������ ��������� ���� ������ ����. ��������, � �������� ���� QNX ��������� ���� ����������:
/dev/ser1 | - ���������������� ���� ������ ����; |
//10/dev/ser1 | - ���������������� ���� ���� 10; |
//0/dev/ser1 | - ���������������� ���� ������ ����; |
//20/usr/dtdodge/test | - ���� �� ���� 20. |
���� �� ������ | ����������� |
�������� ��� ������� ������� ������, ������������ �� ��������� | �� ������� qnx_prefix_getroot() |
���������� ��� ������� ������, ������������ �� ��������� | �� ������� qnx_prefix_setroot() |
��������� ��������� � ����� ������� ������, ������������ �� ��������� | ������� on |
��������, ���� ������������� �� ����� ����, ����� ����� ������ ������� �����, ������������ �� ���������. ��������, ���� �� ��������� ��� ������������ ������� ������, ������������ �� ���������, �� ����������� ��� ��������, ������� ��������� �� ������ ���� ����, ���� ������� ������, ������������ �� ���������, ��� ���� ���� ������� ���������� ���������.
��� �������� ��������� ���� �� ������ �������� � �������, �������� ������ ������� ������ (��������, ��� �������� ����� ������� �������������� ������ Spooler), ���������� ���������� ������� ������ �� ����, ��� ��������� ��� ����� �������� ��������-����������. ��� ����� �� ������ ������ � ��� ������, ���� �� �������, ��� �������-����������� � �������-���������� ����� ���� � ��� �� ������� ������, ������������ �� ��������� (���� ���� ��������� ��� ��� ����� ���������� ������� "//node/").
�� ����������� �������� � ����� ������ ������������ �� ������������ ��������������� �������� �����/������. ���������� ������ ����� ���������, ��� ���������� �������������� ��������, ������� ������������ ������� ��������� ������ ��������� ��������. �������������� ������� �������� ��������� �������
��������, �����������, ��� �� ��������� �� ������, ������� �� ����� ����� �������� ������� (������� ��� ��������, ����������� � ��������� "/"). ������, ���������� �������� ������� �� ������ ���� (������, �� 10), � ������� �� ������ ��������, ��������� "/". �� ������ ��������� ���, ��������� ��������� �������������� �������
� ���� ������ ������� ������ (/) ����� ���������� ��������� //10/. ��������, ���
��� ����� ��� ����� �������������� � ������� ��������� ���� 10, �.�. ��� ���������� � �������� "//10". � ���������� ������ open() ����� ��������� �������������� �������� ������� ���� 10. ����� �������, �������������� ��� �������� ���������� ������ � ��������� �������� �������, ��� � ����� �����������.
��� ������������� ��������� ������� ��������� �������� ������� ��� ���������� �������������. ������ ��������� �� ������� �������, �� ������� ������ �����, ����� ��������� ��������� �������
� ���� ������ �����, ������������ � "/dev", ����� ���������� ������ �������������� ���������, � ������� � ������� ������� - � ��������������� ��������� �������� �������.
����� ����� ������������ �������������� �������� ��� �������� ����������� ���� ���������. ��������, ���� Spooler ������ �������� �� ���� 20, �� ����� �������� ��� ������ �������� �� �������������� ��������� �������
����� ������ �� �������� /dev/printer ����� ������������� �� ���� � ��������� Spooler ������. ����������, ���� � ��� ��� ������ ���������� �� ������ ��������� ������, �� �� ������ ���������� � ��������� �� ���� 20, ��������� ��������� �������������� �������
� ����� ������������� ���� ������� �������������� ������������� ����� �� ���������, � � ���������� ������� ���������� ���������������
���������� �� ����������� �������� ����� � ������ ��� ���� ������. � ���� ������ ���� ��������� ������������� � �������� �������� ��������. QNX ������ ������� ������� ������� � ���� ���������� ������. ������������� ��������� ����� ������ ������������� � ������ ������� ����� ����������� ���������� ������, ���������� ��� �������� �������� ��������, � �������������� �����.
4.2.4. �������������� ��������
������� = ������-������
/=//10/
/usr/dtdodge/test
����� �������� ��
//10/usr/dtdodge/test.
/dev = 5,�:/=//10/
�������� ����������� ���� ���������
/dev/printer=//20/dev/spool
/dev/fd0=//20/dev/fd0
//20/dev/spool ��� //20/dev/fd0
4.2.5. ������������� ��������� �����
��� ����, ����� �������� ������ ������� ���, �� ������ ��������������� �������� fullpath. |
��� �������� ������-���� ������� �����/������, ���������� ��������� � ��������� ������������� ����. ������� open() ���������� ������������� ��������, ������� ���������� ������������ ����� (FD), � ���������� ������������ ��� ����������� �������� �� ����/����� � ���������������� ��������������. (�������, ��� ������� Sendfd(), ������������ � ����, ���������� �� ���������� �����������, ������������ ��� ����������� �������.)
������������ ���� ������������ ������, � ������� �� ������������ ��������� ����, ������������� �������� ��� ������� ��������. ��� ������������� ����������� ���������, ��������� � ���������� ������� ������� open(), ������������� ���������� ���������� PID (������������� ��������) � FD (���������� �����). ��� ��������� ���������� ����������� ������ �������� (open control block - OCB) � ���������� � �������������� �����/������.
�� ���._16 ��������, ��� ������������� �����/������ ������������� ������������ ����� ���������� ������ PID, FD � OCB.
![]() |
���. 16 |
����������� ���� �������� (OCB) �������� ������� ���������� �� ����������� �������. ��������, �������� ������� ��������� ������� ��������� ������ � �����. ������ ������� open() ������� ����� ���. �������, ���� ������� ��������� ���� � ��� �� ���� ������, �� ����� ������ lseek(), ������������ ���� FD, �� ����� ������ �� ��������� ������ ��� ������� FD. �� �� ����� ����������, ����� ������ �������� ��������� ���� � ��� �� ����.
�� ���. 17 ������������ ���������� ��� ��������, ���� �� ������� ��������� ��� ����, � ������ - ���� ��� ��� �� ����� ����. ��� ������� �������� ��������� ���� ����������� ������.
![]() |
������� A ��������� ���� /tmp/file ��� ����. ������� B ��������� ��� �� ���� ���� ���.
���. 17 |
��������� ������������ ������ ������ ��� ����� ��������� ����� ��������� �� ���� � ��� �� ���. ��� ����������� ����� ���������:
����� ��������� ������������ ������ ��������� �� ���� � ��� �� ���, �� ����� ��������� ��������� ��� ���������� ���������� "�������" ���� ���������, ������� ����������� ������, ��������� � ������ ���.
��������, ���� ��������� ������� ���������� ������� lseek() ��� ��������� ��������� ��������� ������, �� ������ ��� ������ ���������� � ����� ������� ���������, � ��� ���� ���������� �� �����, ����� ���������� ����� ������������.
�� ���. 18 �������� ��� ��������, ���� �� ������� ��������� ���� ������, � ����� � ������� ������� dup() - ������ ���. ����� ������� ��������� ������ �������, ������� ��������� ��� �������� �����.
![]() |
������� ������ ��������� ����, � ����� �������� ��� ���� FD � ������� ������� dup(). ����������� ������� ��������� ��� ��� �����������.
���. 18 |
����� ��������� ������������ ������������ ������ ����������, ������������ ��������� spawn() ��� exec(), � ������� ������� fcntl(), ��������� ���� FD_CLOEXEC.
����� | ���������� | ������ |
������� | ������ ������� |