C中的嵌入式Lua从标准输入获取输入
我正在编写一个C应用程序,其中嵌入了lua脚本。Lua脚本从STDIN获取输入。因此,当我从shell运行脚本时,它是这样的:C中的嵌入式Lua从标准输入获取输入,c,lua,embed,C,Lua,Embed,我正在编写一个C应用程序,其中嵌入了lua脚本。Lua脚本从STDIN获取输入。因此,当我从shell运行脚本时,它是这样的: lua myscript.lua < datafile* lua myscript.lua
lua myscript.lua < datafile*
lua myscript.lua
如何从C代码内部实现这一点
谢谢。使用描述符0
(stdin)上的dup2(2)
系统调用和数据文件上的open(2)
返回的描述符:
int fd = open("datafile", O_RDONLY);
dup2(fd, 0);
/* reading from stdin now is in fact reading from datafile */
当然,在实际程序中需要进行一些错误检查
要实现通配符的行为,您可能需要查看readdir(3)
库函数。在描述符0
(stdin)和数据文件open(2)
返回的描述符上使用dup2(2)
系统调用:
int fd = open("datafile", O_RDONLY);
dup2(fd, 0);
/* reading from stdin now is in fact reading from datafile */
当然,在实际程序中需要进行一些错误检查
要实现通配符的行为,您可能需要查看readdir(3)
库函数。您是否尝试过不经修改地运行脚本(即使用io.stdin
等)?除非你在C端做了一些花哨的事情,否则它应该是开箱即用的。你是否尝试过不经修改地运行脚本(即使用io.stdin
等)?除非你在C端做了一些有趣的事情,否则它应该是开箱即用的。在那一点上,我应该如何将STDIN传递到lua_状态?这段代码将你的程序的STDIN(Lua和其他人一样从中读取的STDIN)更改为文件描述符。没有什么可以传递的。我怎么能在那个时候把STDIN传递给卢奥州呢?这段代码将你的程序的STDIN(Lua和其他人一样从中读取的STDIN)更改为文件描述符。没有什么可以传递的。你想让你的程序
正常工作,还是想知道如何在没有shell的情况下在C中实现上述功能?两者兼而有之。我可能没有解释清楚。在程序中(这是Lua中解析器脚本的包装器),我从程序中的数据文件(或数据文件,可能以后会是一个FIFO命名管道)获取每一行。我想在我有了每一行代码之后,把它作为stdin发送给lua解析器。你想让yourprogram
工作,还是想知道如何在没有shell的情况下在C内部执行与上面相同的操作?两者兼而有之。我可能没有解释清楚。在程序中(这是Lua中解析器脚本的包装器),我从程序中的数据文件(或数据文件,可能以后会是一个FIFO命名管道)获取每一行。我想在我有了每一行之后,把它作为stdin发送给lua解析器。