������������� �������
���������������������


4. ������������ ���� ������� �����/������

4.1. ��������

������� �����/������ �� �������� ������ ����. ������������� ��������� �����/������ ����������� ����������� ��� ������ �������. ��������� �������� ������� QNX �������� �������������� ���������, �� ������������ ��������� ���� �� ��������, ��� � ����������� ���������� ������������ ������, ������ �������� �������.

4.1.1. �������� � ������� ����������

� ������� QNX ������������ ��������� ���� ��������� �� ������� ����������. ����� �������, ����������� ����-�������������� ������������ �����/������, ������������ � �������������� ��������� ���� �������, ��������� ����� ������������ ����, � ������� �� ���������� �������� (�.�. ������� ����� ����������). ��� �������� �������� ������ ���������, ������� �������� � ������ ������� ����������, ������������ �������� QNX.

4.2. ��������� �����

4.2.1. �������� �������������� �����/������

��� �������� �����, ��� ��������� ��� �������������� � ������� ��������� ��� ����, ����� ��������� ������ open() � ���������������� �������������� �������� �����/������. ��������, ������������� ��������� (Dev) ������ ������������ ������� /dev. ���� ������� �������� ������� open(), ������� /dev/xxx, �� � ���������� ���������� ������ ���������� ����� � ��������� /dev, ������ open() ����� ��������� � �������������� Dev (���������). ������ ��������� ����� ��������� �������� ��������������� ������� ����������. � ���� ������ ����� �������������� �� �������� ����������� ����������. ��������, �����������, ��� ������� ��� ������������������ ��������:

/ �������� ������� �� ����� (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()

4.2.2. ������� ������

� ������� QNX ������� ������� ���������� ��� �������� �����, ������������� �������� ��������� �������� ��������� �����, ����� ������ ��������� ����������� ����. ������� ������ �������� ����� �������, �� �������� ������� ����� ����. ��������� ������� ������, ����� ����� �������� ������ � ������ � �����������, ������� �� ������ � ������������ ��������� ���� ������ ����. ��������, � �������� ���� QNX ��������� ���� ����������:

/dev/ser1 - ���������������� ���� ������ ����;
//10/dev/ser1 - ���������������� ���� ���� 10;
//0/dev/ser1 - ���������������� ���� ������ ����;
//20/usr/dtdodge/test - ���� �� ���� 20.

�������� �������� �� ��, ��� //0 ������ ��������� � ������ ����.

4.2.3. ������� ������ �� ���������

���� ��������� ����������� �� ����� ����, �� ���������� ��������� ���������� ������� ���� � ��������� ������������ ������� ���� ������ ����. ��������, �������

    //5 ls / 
����������� ������� ls �� ���� 5, ������ ������������ �����, ���
    ls /
����������� �� ����� ����. � ��� � ������ ������ ������� "/" ������ ���� �������� �� ������ ��������� ������ ����, � �� ���� 5. � ��������� ������, ����� ����������� ���� ����������, ������� ��� �� ����������, ���� �� ������� "/" �������������� "�����" ��� ��� ���� 5, ��� � ��� ������ ����: ����� ���������� �� ������������ �� ���������� ������ �������� ������. � ����� ������ ������� ������ ��������� ��� ���������� ��������� ����, �� ������������ � ������ ����� (/), ������� ����������� ������� ������ ������� �� ����� ������� ������, ������������ �� ���������. ����� ���������� ������ ���������� �����, ����� ��� ����������� ������� ������, ������������ �� ���������. ��������, ���� ������� ����� �� ��������� ������� ������ //9, �� ��������� ���
    /usr/home/luc
����� ���������, ���
    //9/usr/home/luc
��� ���������������� ���: "��������� ��������� ��� /usr/home/luc �� ������ ��������� ���� 9".

����� ����������� �������� ��������� ������� ������, ������������ �� ���������, ������ ��� �������� ���������������� �� ����� ���� ����� ������ �������. ��������, �� ��������� �� ���� 9, �������� � ��������������, � ������� �� ��������� ���������� ������� ������ - ���� 9 (����� �������� ������). ���� �� ��� ������������� ������ �������

    ls /
�� ������� ������������ �� ������������ �� ��������� ������� ������ //9, � ���������� ���� ���������� �� < /pre> ls //9/

����������, ���� �� �� ����� �������

    //5 ls /
�� �� �� ��������� ������� ls �� ���� 5, �� ��� ������������ �� ������� ������, ������������ �� ��������� (//9), ������� � ���������� ����� ���������� �� ls //9/. � � ���, � � ������ ������ ��������� ��� ���������� �� �� ������ � ���� �� ������������ ��������� ����.

���� �� ������ �����������
�������� ��� ������� ������� ������, ������������ �� ��������� �� ������� qnx_prefix_getroot()
���������� ��� ������� ������, ������������ �� ��������� �� ������� qnx_prefix_setroot()
��������� ��������� � ����� ������� ������, ������������ �� ��������� ������� on

�������� ��������� ���� ����� ����������

��������, ���� ������������� �� ����� ����, ����� ����� ������ ������� �����, ������������ �� ���������. ��������, ���� �� ��������� ��� ������������ ������� ������, ������������ �� ���������, �� ����������� ��� ��������, ������� ��������� �� ������ ���� ����, ���� ������� ������, ������������ �� ���������, ��� ���� ���� ������� ���������� ���������.

��� �������� ��������� ���� �� ������ �������� � �������, �������� ������ ������� ������ (��������, ��� �������� ����� ������� �������������� ������ Spooler), ���������� ���������� ������� ������ �� ����, ��� ��������� ��� ����� �������� ��������-����������. ��� ����� �� ������ ������ � ��� ������, ���� �� �������, ��� �������-����������� � �������-���������� ����� ���� � ��� �� ������� ������, ������������ �� ��������� (���� ���� ��������� ��� ��� ����� ���������� ������� "//node/").

4.2.4. �������������� ��������

�� ����������� �������� � ����� ������ ������������ �� ������������ ��������������� �������� �����/������. ���������� ������ ����� ���������, ��� ���������� �������������� ��������, ������� ������������ ������� ��������� ������ ��������� ��������. �������������� ������� �������� ��������� �������

    ������� = ������-������

��������, �����������, ��� �� ��������� �� ������, ������� �� ����� ����� �������� ������� (������� ��� ��������, ����������� � ��������� "/"). ������, ���������� �������� ������� �� ������ ���� (������, �� 10), � ������� �� ������ ��������, ��������� "/". �� ������ ��������� ���, ��������� ��������� �������������� �������

    /=//10/

� ���� ������ ������� ������ (/) ����� ���������� ��������� //10/. ��������, ���

    /usr/dtdodge/test
����� �������� ��
    //10/usr/dtdodge/test.

��� ����� ��� ����� �������������� � ������� ��������� ���� 10, �.�. ��� ���������� � �������� "//10". � ���������� ������ open() ����� ��������� �������������� �������� ������� ���� 10. ����� �������, �������������� ��� �������� ���������� ������ � ��������� �������� �������, ��� � ����� �����������.

��� ������������� ��������� ������� ��������� �������� ������� ��� ���������� �������������. ������ ��������� �� ������� �������, �� ������� ������ �����, ����� ��������� ��������� �������

    /dev = 5,�:/=//10/

� ���� ������ �����, ������������ � "/dev", ����� ���������� ������ �������������� ���������, � ������� � ������� ������� - � ��������������� ��������� �������� �������.

�������� ����������� ���� ���������

����� ����� ������������ �������������� �������� ��� �������� ����������� ���� ���������. ��������, ���� Spooler ������ �������� �� ���� 20, �� ����� �������� ��� ������ �������� �� �������������� ��������� �������

    /dev/printer=//20/dev/spool

����� ������ �� �������� /dev/printer ����� ������������� �� ���� � ��������� Spooler ������. ����������, ���� � ��� ��� ������ ���������� �� ������ ��������� ������, �� �� ������ ���������� � ��������� �� ���� 20, ��������� ��������� �������������� �������

    /dev/fd0=//20/dev/fd0

� ����� ������������� ���� ������� �������������� ������������� ����� �� ���������, � � ���������� ������� ���������� ���������������

    //20/dev/spool        ���         //20/dev/fd0

4.2.5. ������������� ��������� �����

���������� �� ����������� �������� ����� � ������ ��� ���� ������. � ���� ������ ���� ��������� ������������� � �������� �������� ��������. QNX ������ ������� ������� ������� � ���� ���������� ������. ������������� ��������� ����� ������ ������������� � ������ ������� ����� ����������� ���������� ������, ���������� ��� �������� �������� ��������, � �������������� �����.

�������� �������� �� ��, ��� ��� ������� �������� �������� �������� ��������� ����� ���������, ���� �������� �� ��� � ������ �����, ���� � ����� �������� �����.

4.2.6. ������� ������� �������

���� ������� ������� ������� ����� ��� ������� ����� (������� ������), �������, ��� �� ��������� � �������� � ������������ ������� ���� ������������� ����. ����, ��������, �� ����� ���� ������� ����, �� � ���� ����������� ������� ������, ������������ �� ���������. ��������, �������

    cd //18/
������������ ������ (������������) ����� � ����������� ��� ������������� ��������� ����� � ���� 18, ���������� �� ����, ����� ������� ������ ������������ �� ���������. ��������������, ����� cd dev, � ���������� ������� //18/dev.

������� cd/ ������ �������� ������ �����, � ������� �������������� ��������� ���, ���������� �� ��������������, ����� �������� �� �������� �����, ������������� �� ���������. ��������, ���� �� ��������� ������������ ������� ������ //9, �� ����� ������� cd dev, � ���������� ������� //9/dev.

�� ����� ���� ��� ��� �� ��� ������, ��� ����� ����������. ������ ������� ����� (//node/) �� ����������, � �� ��������� ������ ������ ������������ ���� (������� ������������ ����� ������� ������, ������������ �� ���������).

����������� �������������, ������������� � �������, �� ������ ������� ������, ������� ��������������� �������� �� ���������, �.�. �������� � ������������ ���� ������ ����.

� ������� cd

� ��������� ������� ������� UNIX ������� cd (������� �������) �������� �������� �� ���, ���� ��� ��� �������� ������������� �����. � ���������� ������� ��� ������ �������� �������� ��������, ������� ����� �������� �� ������� pwd, ����� ���������� �� ��������� � ������� cd.

� QNX ������� cd �� �������� ������� ��� �� ����������� ���������� "..". ��������, �������

    cd /usr/home/luc/test/../doc
��������� ������� ������� ������� /usr/home/luc/doc, ���� ���� ��������� �������� ���������� ����� ���� �������������� �������.

����� �������� � ������������� ������ � ����������� ��. ������ 5 "������������� �������� �������".

��� ����, ����� �������� ������ ������� ���, �� ������ ��������������� �������� fullpath.

4.3. ������������ ���� ���������� ������

��� �������� ������-���� ������� �����/������, ���������� ��������� � ��������� ������������� ����. ������� open() ���������� ������������� ��������, ������� ���������� ������������ ����� (FD), � ���������� ������������ ��� ����������� �������� �� ����/����� � ���������������� ��������������. (�������, ��� ������� Sendfd(), ������������ � ����, ���������� �� ���������� �����������, ������������ ��� ����������� �������.)

������������ ���� ������������ ������, � ������� �� ������������ ��������� ����, ������������� �������� ��� ������� ��������. ��� ������������� ����������� ���������, ��������� � ���������� ������� ������� open(), ������������� ���������� ���������� PID (������������� ��������) � FD (���������� �����). ��� ��������� ���������� ����������� ������ �������� (open control block - OCB) � ���������� � �������������� �����/������.

�� ���._16 ��������, ��� ������������� �����/������ ������������� ������������ ����� ���������� ������ PID, FD � OCB.

���. 16

4.3.1. ����������� ����� ��������

����������� ���� �������� (OCB) �������� ������� ���������� �� ����������� �������. ��������, �������� ������� ��������� ������� ��������� ������ � �����. ������ ������� open() ������� ����� ���. �������, ���� ������� ��������� ���� � ��� �� ���� ������, �� ����� ������ lseek(), ������������ ���� FD, �� ����� ������ �� ��������� ������ ��� ������� FD. �� �� ����� ����������, ����� ������ �������� ��������� ���� � ��� �� ����.

�� ���. 17 ������������ ���������� ��� ��������, ���� �� ������� ��������� ��� ����, � ������ - ���� ��� ��� �� ����� ����. ��� ������� �������� ��������� ���� ����������� ������.

������� A ��������� ���� /tmp/file ��� ����. ������� B ��������� ��� �� ���� ���� ���.
���. 17

��������� ������������ ������ ������ ��� ����� ��������� ����� ��������� �� ���� � ��� �� ���. ��� ����������� ����� ���������:

����� ��������� ������������ ������ ��������� �� ���� � ��� �� ���, �� ����� ��������� ��������� ��� ���������� ���������� "�������" ���� ���������, ������� ����������� ������, ��������� � ������ ���.

��������, ���� ��������� ������� ���������� ������� lseek() ��� ��������� ��������� ��������� ������, �� ������ ��� ������ ���������� � ����� ������� ���������, � ��� ���� ���������� �� �����, ����� ���������� ����� ������������.

�� ���. 18 �������� ��� ��������, ���� �� ������� ��������� ���� ������, � ����� � ������� ������� dup() - ������ ���. ����� ������� ��������� ������ �������, ������� ��������� ��� �������� �����.

������� ������ ��������� ����, � ����� �������� ��� ���� FD � ������� ������� dup(). ����������� ������� ��������� ��� ��� �����������.
���. 18

����� ��������� ������������ ������������ ������ ����������, ������������ ��������� spawn() ��� exec(), � ������� ������� fcntl(), ��������� ���� FD_CLOEXEC.


���������������������
������������� �������