在Lua写一个守护进程

时间:2017-07-01 13:55:48

标签: linux lua daemon

我想编写侦听TCP套接字并允许处理某些用户数据的lua守护程序。 我使用copas库使我的服务器同时使用多个客户端,但不知道如何守护这个服务器。似乎copas没有提供这样的功能。有人知道如何在Lua中创建守护进程吗?

以下是我定义服务器的代码的一部分:

function handler(c, host, port)
    local peer = host .. ":" .. port
    print("connection from ", peer)
    while 1 do
        command = c:receive"*l"
        c:send(router(command))
    end
end


copas.addserver(assert(socket.bind("127.0.0.1", 8888)),
                        function(c) return handler(copas.wrap(c), c:getpeername()) end
)


copas.loop()

提前致谢!

2 个答案:

答案 0 :(得分:1)

看看这两个模块,它们可以完全按照您的要求进行(是的,我们正是这样使用它们):

https://github.com/arcapos/luaunix https://github.com/arcapos/luanet

答案 1 :(得分:0)

感谢您的回复。我用lua-posix库完成了它,结果比我想象的要容易。现在看起来像:

local posix = require("posix")

--some code here

pid = posix.fork()
if pid == 0 then
    print("PID: " .. posix.getpid('pid'))
    loop = copas.loop()
else
    os.exit()
end

P.S。我意识到这是一个非常简单的解决方案,可能只是作为一个例子使用。