libblkid библиотека: для чего функция 'blkid_superblocks_get_name'?

Ваш сценарий является неполным, поскольку он пропускает завершение EOF литерал.

я пытаюсь объяснить сценарий:

первая строка просто присваивается "привет" к переменной string.

 string="hello"

2-я строка запускается ed команда и подача это (через stdin) следующие строки, пока это не встречается EOF литерал (<< foo средства: следующие строки до foo перенаправляются к stdin)

 ed << EOF

следующие строки ed команды.

откройте файл, названный *any_file* (e any_file), и вставить 1i строка ${string} (это будет расширено до "привет").

но так как Вы пропускаете завершение EOF литерал, stdin-перенаправление бросает ошибку.

2
09.04.2014, 23:36
1 ответ
[1131052]Кратко рассмотрим функцию:

name[1131467] - это указатель на указатель [1131468]char *[1131469] (таким образом, указатель на "строку"). Предполагаемое использование было бы чем-то вроде

Функция устанавливает ваш указатель [1131470]the_name[1131471], чтобы указать на имя чего-то. Рассмотрим подробнее: Что такое [1131472]idinfos[1131473] и откуда оно взялось?

Оказывается [1131474]idinfos[1131475] - это массив из [1131476]struct blkid_idinfo *[1131477]:

и если посмотреть дальше, то мы увидим [1131478]struct blkid_idinfo[1131479] это

Комментарий к кислороду говорит о том, что это описывает файловую систему или RAID. Давайте посмотрим на одного из членов [1131480]idinfos[1131481]:

Очевидно, что это описывает схему разбиения DOS (также известную как таблица разделов MBR).

Итак, [1131482]idinfos[1131483] описывает несколько распознанных форматов разделов (MBR, GPT, BSD disklabels, ...). Оглядываясь назад на [1131484]blkid_superblocks_getname()[1131485] видно, что для этого требуется [1131486]idx[1131487], что является смещением в массиве [1131488]idinfos[1131489] (как цитировалось выше) и делает [1131490]name[1131491] указателем на [1131492]name[1131493]-элемент соответствующей [1131494]-структуры blkid_idinfo[1131495] (в приведенном выше примере [1131496] "dos"[1131497]).

libblkid/samples/partitions. c[1131499] в исходном коде [1131500]util-linux[1131501] показывает пример, как использовать его для итераций поддерживаемых типов разделов.

Замечание:[1131503] исходный код [1131504]libblkid[1131505] выглядит достаточно ясно, попробуйте взглянуть на него, чтобы понять, что он делает, это довольно хорошо для понимания ([1131506]grep[1131507] ваш друг ;) Также взгляните на другой пример исходного кода, чтобы понять, как [1131508]libblkid[1131509] должен быть использован.[1131071].

2
27.01.2020, 22:13

Теги

Похожие вопросы