我想使用Mac OS X的listxattr C函数,并将它变成Python中有用的东西。手册页告诉我该函数返回一个字符串缓冲区,它是一个“简单的以NULL结尾的UTF-8字符串,并以任意顺序返回,在缓冲区名称之间不提供额外的填充。”麻烦理解如何处理C字符串
在我的C文件,我把它设置正确看来(我希望):
char buffer[size];
res = listxattr("/path/to/file", buffer, size, options);
但是,当我打印出来,我只得到只有第一个属性,这是两个字符长,即使它的大小是25.所以然后我手动设置缓冲[3] ='Z'和低,看看当我再次打印缓冲区我得到第一个TWO属性。
我想我明白发生了什么事。该缓冲区是一个以NULL结尾的字符串序列,并在它看到空字符时立即停止打印。但是,我应该如何将整个序列解压到所有的属性中呢?
我是C的新手,并用它来弄清楚用C来扩展Python的机制,并且跑到了这个很奇怪的地方。
+1对于一个好的算法 – pmg