【问题标题】:Keep Lua tmpfile after execute执行后保留 Lua tmpfile
【发布时间】:2016-02-28 10:24:40
【问题描述】:

上传表示为 tmpfile() 的文件,并将在脚本退出后删除。 删除 tmpfile 后如何硬链接此文件以保留其内容?

如何通过句柄获取文件名?

> a=io.tmpfile()
> print(a)
file (0x20c8790)
> lfs=require"lfs"
> lfs.link(a,"/tmp/aaaa")
stdin:1: bad argument #1 to 'link' (string expected, got FILE*)
stack traceback:
    [C]: in function 'lfs.link'
    stdin:1: in main chunk
    [C]: in ?

此文件太大,无法逐字节复制。

【问题讨论】:

  • 只使用常规文件。在 Windows 上,我知道存在通过句柄获取名称的方法。也可以从 FILE* 获取句柄(但如果与静态 MSCRT 链接可能会出现一些问题)。但是你真的需要这个而不是手动创建文件并将其用作 tmp 吗?这是我的暗示。 github.com/moteus/lua-path/blob/master/lua/path.lua#L229
  • 使用os.tmpname()代替io.tmpfile()
  • io.tmpfile() 在库中,所以我不想编辑它

标签: lua temporary-files tmp tmpfs luafilesystem


【解决方案1】:

io.tmpfile 使用stdio.h 的tmpfile,所以无法调整这个导出的函数。 您可以使用pl.path 等库来获取临时文件的完整路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多