Blame doc/examples/signal.lua.html

Packit 437b5e
Packit 437b5e
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Packit 437b5e
<html>
Packit 437b5e
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
Packit 437b5e
<head>
Packit 437b5e
    <title>luaposix 33.3.0 Reference</title>
Packit 437b5e
    <link rel="stylesheet" href="../ldoc.css" type="text/css" />
Packit 437b5e
</head>
Packit 437b5e
<body>
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
	
Packit 437b5e
	
<big></big>
Packit 437b5e
	
Packit 437b5e
 
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e

Packit 437b5e

luaposix 33.3.0

Packit 437b5e
Packit 437b5e
    Packit 437b5e
      
  • Index
  • Packit 437b5e
    Packit 437b5e
    Packit 437b5e
    Packit 437b5e
    Packit 437b5e

    Examples

    Packit 437b5e
      Packit 437b5e
        
    • curses.lua
    • Packit 437b5e
        
    • dir.lua
    • Packit 437b5e
        
    • fork.lua
    • Packit 437b5e
        
    • fork2.lua
    • Packit 437b5e
        
    • getopt.lua
    • Packit 437b5e
        
    • glob.lua
    • Packit 437b5e
        
    • limit.lua
    • Packit 437b5e
        
    • lock.lua
    • Packit 437b5e
        
    • netlink-uevent.lua
    • Packit 437b5e
        
    • ping.lua
    • Packit 437b5e
        
    • poll.lua
    • Packit 437b5e
        
    • rt_sched.lua
    • Packit 437b5e
        
    • signal.lua
    • Packit 437b5e
        
    • socket.lua
    • Packit 437b5e
        
    • termios.lua
    • Packit 437b5e
        
    • tree.lua
    • Packit 437b5e
      Packit 437b5e

      Modules

      Packit 437b5e
        Packit 437b5e
          
      • posix
      • Packit 437b5e
          
      • posix.ctype
      • Packit 437b5e
          
      • posix.curses
      • Packit 437b5e
          
      • posix.dirent
      • Packit 437b5e
          
      • posix.errno
      • Packit 437b5e
          
      • posix.fcntl
      • Packit 437b5e
          
      • posix.fnmatch
      • Packit 437b5e
          
      • posix.getopt
      • Packit 437b5e
          
      • posix.glob
      • Packit 437b5e
          
      • posix.grp
      • Packit 437b5e
          
      • posix.libgen
      • Packit 437b5e
          
      • posix.poll
      • Packit 437b5e
          
      • posix.pwd
      • Packit 437b5e
          
      • posix.sched
      • Packit 437b5e
          
      • posix.signal
      • Packit 437b5e
          
      • posix.stdio
      • Packit 437b5e
          
      • posix.stdlib
      • Packit 437b5e
          
      • posix.sys.msg
      • Packit 437b5e
          
      • posix.sys.resource
      • Packit 437b5e
          
      • posix.sys.socket
      • Packit 437b5e
          
      • posix.sys.stat
      • Packit 437b5e
          
      • posix.sys.statvfs
      • Packit 437b5e
          
      • posix.sys.time
      • Packit 437b5e
          
      • posix.sys.times
      • Packit 437b5e
          
      • posix.sys.utsname
      • Packit 437b5e
          
      • posix.sys.wait
      • Packit 437b5e
          
      • posix.syslog
      • Packit 437b5e
          
      • posix.termio
      • Packit 437b5e
          
      • posix.time
      • Packit 437b5e
          
      • posix.unistd
      • Packit 437b5e
          
      • posix.utime
      • Packit 437b5e
        Packit 437b5e

        Classes

        Packit 437b5e
          Packit 437b5e
            
        • posix.curses.chstr
        • Packit 437b5e
            
        • posix.curses.window
        • Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
              

          signal.lua

          Packit 437b5e
          Packit 437b5e
          local sig     = require "posix.signal"
          Packit 437b5e
          local unistd  = require "posix.unistd"
          Packit 437b5e
          local syswait = require "posix.sys.wait"
          Packit 437b5e
          Packit 437b5e
          local function go (fn, ...)
          Packit 437b5e
            local cpid = unistd.fork ()
          Packit 437b5e
            if cpid == 0 then -- run function as child
          Packit 437b5e
              unistd._exit (fn (...) or 0)
          Packit 437b5e
            else
          Packit 437b5e
              return cpid
          Packit 437b5e
            end
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          local verbose = #arg > 0
          Packit 437b5e
          Packit 437b5e
          local function sleepx (secs)
          Packit 437b5e
            while true do
          Packit 437b5e
              secs = unistd.sleep (secs)
          Packit 437b5e
              if verbose then print ("sleep", secs) end
          Packit 437b5e
              if secs == 0 then return end
          Packit 437b5e
            end
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          local nchild, nsig = 0, 0
          Packit 437b5e
          Packit 437b5e
          sig.signal (sig.SIGCHLD, function()
          Packit 437b5e
            local pid, status, code = syswait.wait (-1, syswait.WNOHANG)
          Packit 437b5e
            while pid do
          Packit 437b5e
              if pid ~= 0 then
          Packit 437b5e
                if verbose then print ("wait", pid, status, code) end
          Packit 437b5e
                nchild = nchild + 1
          Packit 437b5e
              end
          Packit 437b5e
              pid, status, code = syswait.wait (-1, syswait.WNOHANG)
          Packit 437b5e
            end
          Packit 437b5e
          end)
          Packit 437b5e
          Packit 437b5e
          local function handler (signo)
          Packit 437b5e
            if verbose then print ("handled", signo) end
          Packit 437b5e
            nsig = nsig + 1
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          sig.signal (sig.SIGUSR1, handler)
          Packit 437b5e
          sig.signal (sig.SIGUSR2, handler)
          Packit 437b5e
          sig.signal (60, handler)
          Packit 437b5e
          Packit 437b5e
          local function killp (nsig)
          Packit 437b5e
            return sig.kill (unistd.getppid (), nsig)
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          c1 = go (function() unistd.sleep (1); killp (sig.SIGUSR1); killp (sig.SIGUSR2) end)
          Packit 437b5e
          c2 = go (function() unistd.sleep (2); killp (sig.SIGUSR2); end)
          Packit 437b5e
          c3 = go (function() unistd.sleep (2); killp (sig.SIGUSR1) end)
          Packit 437b5e
          Packit 437b5e
          sleepx(3)
          Packit 437b5e
          Packit 437b5e
          if verbose then
          Packit 437b5e
            print ("children", nchild, "signals", nsig)
          Packit 437b5e
          else
          Packit 437b5e
            assert (nchild == 3)
          Packit 437b5e
            assert (nsig ==  4)
          Packit 437b5e
            print '+++ tests OK +++'
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
           
          Packit 437b5e
           
          Packit 437b5e
          Packit 437b5e
          generated by LDoc 1.4.3
          Packit 437b5e
          Last updated 2015-03-01 09:06:02 
          Packit 437b5e
           
          Packit 437b5e
           
          Packit 437b5e
          </body>
          Packit 437b5e
          </html>