Whenever the code gets to accept, three forked processes die with Error: unhandled exception: Bad file descriptor (code: 9) [IOSelectorsException] and only the original survives.
var server = newAsyncSocket()
server.setSockOpt(OptReuseAddr, true)
server.bindAddr(Port(5000))
server.listen()
# Four processes
discard posix.fork()
discard posix.fork()
proc serve {.async.} =
while true:
let client = await server.accept()
client.setSockOpt(OptNoDelay, true)
asyncCheck processClient(client)
asyncCheck serve()
runForever()
I tried with net sockets instead of async and then it works as expected but I cannot figure out how to turn plain socket into async socket.
So, how is one supposed to implement pre-fork listening on Nim?