2016-02-28 88 views
1

將uploades文件表示爲tmpfile()並將被刪除,然後腳本退出。 如何在刪除tmpfile後硬鏈接此文件以保留其內容?執行後保留Lua 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 ? 

該文件太大而無法按字節複製到另一個文件。

+0

只需使用常規文件。在Windows中,我知道有辦法通過處理獲取名稱。也可能從FILE *獲得句柄(但是如果與靜態MSCRT鏈接,可能會出現一些問題)。但是,你真的需要這個,而不是僅僅手動創建文件並將其用作tmp?這是我的impl。 https://github.com/moteus/lua-path/blob/master/lua/path.lua#L229 – moteus

+0

使用[os.tmpname()](http://www.lua.org/manual/5.3/manual .html#pdf-os.tmpname)而不是io.tmpfile() –

+0

io.tmpfile()在庫中,所以我不想編輯這個 – eri

回答

1

io.tmpfile使用stdio.h的tmpfile,所以不可能調整這個導出的函數。 您可以使用庫如pl.path來獲取臨時文件的完整路徑。