我想编写侦听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()
提前致谢!
答案 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。我意识到这是一个非常简单的解决方案,可能只是作为一个例子使用。