poll.lua

#! /usr/bin/env lua

local M = require 'posix.unistd'


local F = require 'posix.fcntl'


local fd1 = F.open(arg[1], F.O_RDONLY)
local fd2 = F.open(arg[2], F.O_RDONLY)

local fds = {
   [fd1] = {events={IN=true}},
   [fd2] = {events={IN=true}}
}

while true do
   require 'posix.poll'.poll(fds, -1)
   for fd in pairs(fds) do
      if fds[fd].revents.IN then
         local res = M.read(fd,1024)
         M.write(1,res);
      end
      if fds[fd].revents.HUP then
         M.close(fd)
         fds[fd] = nil
         if not next(fds) then
            return
         end
      end
   end
end
generated by LDoc 1.5.0 Last updated 2023-06-16 20:19:12