Я пытаюсь использовать функцию Mac OS X listxattr C и превратить ее во что-то полезное в Python.Страница man сообщает мне, что функция возвращает строковый буфер, который представляет собой «простые строки UTF-8 с нулевым символом в конце и возвращаются в произвольном порядке. Никаких дополнительных заполнений между именами в буфере не предусмотрено». *
В моем C-файле он настроен правильно, кажется (я надеюсь):
char buffer[size];
res = listxattr("/path/to/file", buffer, size, options);
Но когда я его распечатал, я получил ТОЛЬКО атрибут FIRST, который был длиной в два символа, дажехотя его размер равен 25. Итак, я вручную установил buffer [3] = 'z' и low, и вот, когда я снова печатаю буфер, я получаю первые ДВА атрибута.
Мне кажется, я понимаю, что происходит.Буфер представляет собой последовательность строк, оканчивающихся NULL, и останавливает печать, как только видит символ NULL.Но тогда как мне распаковать всю последовательность во ВСЕ атрибуты?
Я новичок в C и использую его, чтобы выяснить механизм расширения Python с помощью C, и столкнулся с этим doozy.