Можно использовать Пакет C/C++ Netbeans, которые работают с G ++/GCC:
В пустом каталоге:
% stat .
File: `.'
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fe04h/65028d Inode: 537317737 Links: 2
Access: (0750/drwxr-x---) Uid: ( 1000/stribika) Gid: ( 100/ users)
Access: 2011-02-22 08:47:20.935036074 +0100
Modify: 2011-02-22 08:47:20.935036074 +0100
Change: 2011-02-22 08:47:20.935036074 +0100
Birth: -
% mkdir foo
% stat .
File: `.'
Size: 16 Blocks: 0 IO Block: 4096 directory
Device: fe04h/65028d Inode: 537317737 Links: 3
Access: (0750/drwxr-x---) Uid: ( 1000/stribika) Gid: ( 100/ users)
Access: 2011-02-22 08:47:20.935036074 +0100
Modify: 2011-02-22 08:47:57.465036072 +0100
Change: 2011-02-22 08:47:57.465036072 +0100
Birth: -
% stat foo
File: `foo'
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fe04h/65028d Inode: 509269 Links: 2
Access: (0750/drwxr-x---) Uid: ( 1000/stribika) Gid: ( 100/ users)
Access: 2011-02-22 08:47:57.465036072 +0100
Modify: 2011-02-22 08:47:57.465036072 +0100
Change: 2011-02-22 08:47:57.465036072 +0100
Birth: -
Поскольку Вы видите, что существует 2 ссылки на пустой каталог. Когда я создаю новый в нем, число каналов увеличивается до 3. Additionaly там являются 2 ссылками на новый каталог. Общее количество является 3 новыми ссылками.
Это вызвано тем, что каждый каталог имеет ссылку на себя (.) и ее родителя (..).
В исходной реализации Unix, для хранения кода файловой системы в ядре простым, программы управления каталогом сделали некоторую дополнительную работу: в частности, mkdir /parent/a
созданный запись для a
в /parent
, плюс названная запись .
в a
(указывающий a
самостоятельно) и названная запись ..
в a
(указывающий /parent
¹).
Довольно скоро код для mkdir
и друзья, перемещенные в ядро так или иначе, но формат файловой системы, продолжали иметь явный .
и ..
записи, который код обхода файловой системы, найденный по имени (в противоположность наличию двух указателей специального формата в каждом каталоге).
В наше время, некоторые (большинство?) файловые системы фальсифицируют его: каталоги на самом деле не имеют .
и ..
записи на диске, они сгенерированы драйвером. Однако с точки зрения пользователя, это прозрачно. Число каналов каталога все еще два плюс количество подкаталогов (запись в родителе, собственный каталог .
, и каждый подкаталог ..
). В частности, пустой каталог имеет число каналов два (т.е. существует две записи в файловой системе, указывающей на него), но создающий его создает три записи (третий ..
который указывает на родителя).
¹ ссылкой, не по имени. Таким образом, если Вы переименовываете /parent
, a
..
продолжает указывать a
родительский каталог, везде, куда это перемещается в в структуре файловой системы.
.
и..
в новом каталоге и фактической ссылке на новый каталог, в его родительском каталоге. – AlexWebr 10.08.2012, 23:29