nginx - How to use ffi.C.lstat? -


i want file's basic infomation lstat function in ngx_lua programme. init.lua's content fallow:

local ffi = require "ffi" local ffi_c = ffi.c local ffi_new = ffi.new  ffi.cdef[[     typedef long long time_t;     typedef struct timespec {         time_t  tv_sec;         long    tv_nsec;         ...;     };     typedef struct stat {         struct timespec st_mtim;         ...;     };      int lstat(const char *path, struct stat *buf); ]]  buf = ffi_new("struct stat *")  function checkfile (filename, buf)     ffi_c.lstat(filename, buf) end 

when start nginx, there errors happen. content fallow:

  • 2014/04/25 15:00:39 [error] 26396#0: lua entry thread aborted: runtime error: /home/nginx/conf/cop/init.lua:42: /usr/local/lib/libluajit-5.1.so.2: undefined symbol: lstat stack traceback: coroutine 0: [c]: in function '__index' /home/nginx/conf/cop/init.lua:42: in function 'checkfile' /home/nginx/conf/cop/check1.lua:37: in function , context: ngx.timer

buf = ffi_new("struct stat *") creates new pointer struct stat object; doesn't allocate actual struct stat instance. want ffi_new("struct stat") instead.

before attempting ffi, sure familiar c's memory model, because using luajit's ffi writing in c. won't protect dereferencing null, etc.

also, buf global, don't want. sure make local.


Comments

Popular posts from this blog

java - Intellij Synchronizing output directories .. -

git - Initial Commit: "fatal: could not create leading directories of ..." -