是否可以从 Lua 函数写入在 C 中打开的文件描述符?
我有一个小型 C 程序,它调用 Lua 函数并向其发送一个文件描述符,是否可以从 Lua 写入该文件描述符?
I have a small C program that calls a Lua function and sends it a file descriptor, is it possible to write to this file descriptor from Lua ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看一下 C 函数 fdopen()。
它需要一个文件描述符并返回一个流/FILE*。
如果你为 fdopen() 实现一个 Lua C 扩展来返回一个 LuaStream,那么你可以在生成的 Lua Stream 上使用正常的 Lua io 调用。
比仅仅为您想做的事情实现一次性功能更好。
有关创建 Lua 流的示例,请参阅 Lua 5.2.1 源代码的 liolib.c 中的 io_open。
Have a look at the C function fdopen().
It takes a file descriptor and gives you back a stream/FILE*.
If you implement a Lua C extension for fdopen() to give you back a LuaStream then you can use the normal Lua io calls on the resulting Lua Stream.
Better than just implementing a one-off function for what you want to do.
see io_open in liolib.c of the Lua 5.2.1 sources for an example of creating a Lua Stream.
我认为在调用 lua 函数之前将标准输出重定向到套接字 fd 可能会起作用,但返回字符串并用 C 编写会更容易。
I think redirecting the standard output to the socket fd, before calling the lua function, may work, but it's easier to just return the string and write it in C.