WIFEXITED 和 WIFEXITSTATUS 宏

我正在使用 luajit ffi 库来调用 C 库函数 waitpid。

不过我找不到 status 结果的正确编码规范。我找到的唯一文档是 C 宏函数,但我更喜欢用纯 lua 来编写。

我简略地查看了定义这些宏的头文件,但它们不简单,而是引用其他引用到其他宏的引用。

你能帮忙吗?

点赞
用户1161878
用户1161878

一种方法是将宏包装在小函数中:

#include <sys/types.h>
#include <sys/wait.h>

int wifexited(int status) {
  return WIFEXITED(status);
}

int wifexitstatus(int status) {
  return WEXITSTATUS(status);
}

现在构建一个 DLL(你没有提到操作系统,所以你需要自己解决)。

加载 DLL ffi.load(...) 最后:

waitpidlib = ffi.cdef[[
  int wifexited(int status);
  int wifexitstatus(int status);
]]
...
local ans = waidpidlib.wifexited(42)
2016-10-04 03:03:37