Поскольку pwd
или echo
имеют внешние команды с тем же именем, / bin / pwd
или / bin / эхо
. Если вы посмотрите на вывод strace
, вы увидите:
$ strace pwd
execve("/bin/pwd", ["pwd"], [/* 68 vars */]) = 0
brk(0) = 0x241e000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f80c31b9000
Обратите внимание, что при поиске в PATH
, strace
принимает только обычный файл с установленными битами выполнения.
Ни одна файловая система общего назначения не использует последовательности начала или конца файла. Они были бы крайне непрактичными: что, если файл содержит эти последовательности символов?
Большинство базовых файловых систем делят хранилище на блоки фиксированного размера и поддерживают список блоков для каждого файла. Размер файла хранится отдельно, и исходя из этого определяется, какая часть последнего частичного блока используется файлом. Сложные файловые системы уточняют эту основную идею.
В HFS список блоков, составляющих содержимое файла, сохраняется как экстенты в записи файла и в файле переполнения экстентов. Размер блоков распределения (основная непрерывная единица содержимого файла) хранится в заголовке файловой системы.