p = require "posix" if p.AF_NETLINK ~= nil then local fd, err = p.socket(p.AF_NETLINK, p.SOCK_DGRAM, p.NETLINK_KOBJECT_UEVENT) assert(fd, err) local ok, err = p.bind(fd, { family = p.AF_NETLINK, pid = p.getpid("pid"), groups = -1 }) assert(ok, err) while true do local data, err = p.recv(fd, 16384) assert(data, err) for k, v in data:gmatch("%z(%u+)=([^%z]+)") do print(k, v) end print("\n") end end