У меня есть проект для школы, который подразумевает создание c-программы, которая работает как tar в системе unix. У меня есть несколько вопросов, которые я хотел бы кто-нибудь объяснить мне:Заголовок и структура формата tar
Размерность архива. Я понял (из просмотра в Интернете), что в архиве определено число блоков по 512 байт. Таким образом, заголовок имеет 512 байт, затем за ним следует содержимое файла (если это только один файл для архивации), организованный в блоках из 512 байт, а затем еще 2 блока по 512 байт.
Например: предположим, что у меня есть файл txt из 0 байтов для архивации. Это должно означать несколько 512 * 3 байта для использования. Почему, когда я работаю с функцией tar в unix и свойствах click, он имеет 10.240 байт? Я думаю, что он добавляет некоторые 0 (NULL) байтов, но я не знаю, где и почему и сколько ...
Заголовок chcksum. Как я знаю, это должен быть размер архива. Когда я проверяю его с помощью hexdump -C, он кажется рядом с реальным размером (при нажатии свойств) архива. Например, 11200 или 11205 или что-то подобное, если я архивирую 0-байтовый txt-файл. Является ли этот размер восьмеричным или десятичным? Мои ставки - это восьмеричные, потому что вся информация, которую вы помещаете в заголовок, должна быть в восьмеричном. Мой второй вопрос на этом этапе - это то, что добавлено больше от исходного размера 10240 байт?
Режим заголовка. Предположим, что у меня есть файл с 664, файл формата будет 0, тогда я должен поместить в заголовок 0664. Почему в подлинном архиве печатается еще 3 0 в начале (000064)?
проверить http://en.wikipedia.org/wiki/Tar_(computing)? – SSpoke
Я проверил его, но я не понял, что «Контрольная сумма рассчитывается путем принятия суммы значений без знакового байта записи заголовка с восемью байтами контрольной суммы, принятыми как ascii-пробелы (десятичное значение 32)». – user3187893
Не знаю, почему они будут десятичным значением 32, которое является ascii для пробела, кажется, что они байты 0, если контрольная сумма короткая и может быть длиной до 8 байтов. Попробуйте прочитать это http://www.gnu.org/software/tar/manual/html_node/Standard.html – SSpoke