Blame examples/poll.lua

Packit 437b5e
local P = require 'posix'
Packit 437b5e
Packit 437b5e
local fd1 = P.open(arg[1], P.O_RDONLY)
Packit 437b5e
local fd2 = P.open(arg[2], P.O_RDONLY)
Packit 437b5e
Packit 437b5e
local fds = {
Packit 437b5e
  [fd1] = { events = {IN=true} },
Packit 437b5e
  [fd2] = { events = {IN=true} }
Packit 437b5e
}
Packit 437b5e
Packit 437b5e
while true do
Packit 437b5e
  P.poll(fds,-1)
Packit 437b5e
  for fd in pairs(fds) do
Packit 437b5e
    if  fds[fd].revents.IN then
Packit 437b5e
      local res = P.read(fd,1024)
Packit 437b5e
      P.write(1,res);
Packit 437b5e
    end
Packit 437b5e
    if  fds[fd].revents.HUP then
Packit 437b5e
      P.close(fd)
Packit 437b5e
      fds[fd] = nil
Packit 437b5e
      if not next(fds) then return end
Packit 437b5e
    end
Packit 437b5e
  end
Packit 437b5e
end