我正在尝试为序列化/反序列化库编写XS粘合代码,该库能够处理提供write(ctx, buffer, count)
/ read(ctx, buffer, count)
接口的任何内容。我希望能够使用我用
open $reader, '<', \$in;
open $writer, '>', \$out;
所以使用FILE*
映射似乎不起作用。由于我没有找到任何好的文档,我玩了一下并得到了以下的XS片段:
void
write_buf (fh, string);
INPUT:
PerlIO* fh;
SV* string;
CODE:
STRLEN length = SvLEN (string);
char* buf = SvPV (string, length);
PerlIO_write (fh, buf, length);
它似乎做了我想要的,但这是处理Perl可能认为XS代码中的文件句柄的所有内容的正确方法吗?
答案 0 :(得分:2)
你有你需要的东西。与PerlIO*
一起使用的函数将确实处理作为Perl程序的文件句柄出现的所有内容。