$ l --help
l: command not found
Похож на Вас, настраивали псевдоним в Вашей среде. Возможно, Вы наследовали a .profile
, .bashrc
или подобный содержащий что-то как alias l='ls -F'
.
-F, --classify
append indicator (one of */=>@|) to entries
Попробовать which l
и alias
разыскать его определение.
Дескриптор файла 1 переводит в stdout Файловую структуру в Ядре, Открывают Files Table.
Это - недоразумение. Таблица файлов ядра не имеет ничего вообще, чтобы сделать с файловыми структурами пространства пользователя.
В любом случае ядро имеет два уровня абстракции. Существует внутренняя структура, которая представляет сам файл, который является считаемой ссылкой. Существует "открытое описание файла", которое является считаемой ссылкой. И затем существует дескриптор файла, который не является считаемой ссылкой. Файловая структура указывает путь к самому inode. Открытое описание файла содержит вещи как открытый режим и указатель файла.
Когда Вы звоните близко, Вы всегда закрываете дескриптор файла. Когда дескриптор файла закрывается, подсчет ссылок на его открытом описании файла постепенно уменьшается. Если это переходит к нулю, открытое описание файла также выпущено, и подсчет ссылок на самом файле постепенно уменьшается. Только если это переходит к нулю, освобожденная файловая структура ядра.
Нет никакого шанса для одного процесса для выпуска ресурса, который использует другой процесс, потому что совместно используемые ресурсы являются считаемой ссылкой.
В этом случае не много произойдет. stdin, stdout, и stderr все склонны быть клонами того же дескриптора файла. Ссылочный счетчик для дескриптора файла будет постепенно уменьшен одним. Тот же дескриптор файла обычно сохранен оболочкой, от которой была запущена программа, таким образом, дескриптор файла должен быть сохранен.
Ядро проводит подсчет ссылок для всех файлов (inodes), которые открыты. Пока подсчет ссылок больше, чем нуль, которым будет сохранен файл. Я ожидал бы, что отдельный счетчик сохранен для открытых дескрипторов файлов. После того как это поражает нуль, ядро может освободить память, используемую дескриптором файла.
Когда все ссылки на файл (записи каталога и дескрипторы файлов) будут удалены, код файловой системы отметит inode для повторного использования. Любые блоки, которые имеет файл, сделаны доступными для выделения. Много файловых систем очистят указатели блока в inode, когда он будет выпущен. Это делает восстановление удаленного файла трудным. Обновления диска могут быть буферизованы и завершены в более позднее время.
cat > some.file
, кошка получает EOF на stdin, но оболочка не делает. (2) Почему подсчет ссылок? Почему не некоторая форма сборки "мусора"? Разве GC не находится намного лучше в пространстве пользователя?
– Bruce Ediger
28.11.2011, 06:54
cat > some.file
что его на самом деле выполнение разветвляет, открываясь 'some.file' и присваивая его дескриптору файла 1, затем это делает exec("cat")
. Когда процесс является должностным лицом () 'd, он наследовал открытые дескрипторы файлов.
– Patrick
28.11.2011, 07:06
open
успешно выполняется. – David Schwartz 29.07.2014, 01:47