Транзакционная работа с БД для избежания блокировок.
[weathermon.git] / lib / wm_util.lua
index 984f6aeebfbc873c84e08e99c7321dd09445acab..2c05bb054cb882f6fcfb8d381d44cd442cbfdfb6 100644 (file)
@@ -1,6 +1,9 @@
 #!/usr/bin/lua
 
 local socket = require "socket"
+local lfs = require "lfs"
+local uci = require "uci"
+local posix = require "posix"
 
 function startswith(String,Start)
    if String then
@@ -95,7 +98,6 @@ function split(s, delimiter)
 end
 
 function list_dir(name)
-    local lfs = require "lfs"
     local result = {}
     for name in lfs.dir(name) do
         if not startswith(name,".") then
@@ -107,8 +109,6 @@ end
 
 function get_devid(config)
 
-  local uci = require "uci"
-
   local web_devid = uci.get(config,"web","devid")
   
   if web_devid then
@@ -126,4 +126,26 @@ function get_devid(config)
   local web_devid = io.read("*line")
   return web_devid:gsub(":",""):upper()
 
-end
\ No newline at end of file
+end
+
+function get_children()
+
+  local pid = posix.getpid()
+  local pidlist = list_dir('/proc')
+  local pids = {}
+
+  for k,v in pairs(pidlist) do
+
+    pcall( function ()
+      local stats = get_file_content('/proc/'..v..'/stat')
+      local ppid = tonumber(split(stats,' ')[4])
+      if pid == ppid then
+        pids[#pids+1] = tonumber(v)
+      end 
+    end)
+
+  end
+
+  return pids
+
+end