Tag: perl io

嵌入式perl in C,perlapio – 与STDIO的互操作性

我刚刚意识到,PerlIO层似乎不仅仅(或多或少)能够轻松地包装stdio.h函数。 如果我尝试使用通过PerlIO_stdout()解析的PerlIO_stdout()和使用stdio.h中的函数的PerlIO_stdout() , PerlIO_fileno()失败。 例如: PerlIO* perlStdErr = PerlIO_stderr(); fdStdErrOriginal = PerlIO_fileno(perlStdErr); relocatedStdErr = dup(fdStdOutOriginal); _write(relocatedStdErr, “something”, 8); //<– this fails 我用VC10尝试过这个。 嵌入式perl程序是从不同的上下文执行的 – 因此不可能在执行对relocatedStdErr的写入的上下文中使用PerlIO。 对于好奇:我需要执行一个perl脚本并将脚本的stdout / stderr的输出转发到日志,同时保持为stdout写自己的能力。 此外,这应该工作平台独立(Linux,Windows控制台应用程序,win32桌面应用程序)。 只是转发stdout / stderr在Win32桌面应用程序中不起作用,因为没有;) – 你需要使用perl的stdout / stderr。 需要的解决方案:能够在perlio派生的文件句柄(或描述符)上使用PerlIO堆栈进行写入。 编辑 – 我的解决方案: 正如Story Teller指向PerlIO_findFILE,这就是诀窍。 所以这里是代码的摘录 – 请参阅内部的注释以获取描述: FILE* stdErrFILE = PerlIO_findFILE(PerlIO_stderr()); //convert to Perl’s stderr to stdio […]