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

How to access named pipes using JavaScript in Firefox add-on? -

multithreading - OPAL (Open Phone Abstraction Library) Transport not terminated when reattaching thread? -

node.js - req param returns an empty array -