On Mon, 06 Oct 2014 22:01:52 +0200, Martin Nowak wrote:

On 10/06/2014 10:44 AM, Rafael wrote:

Hello.
Please, excuse me my bad english in advance!extern (с) int fork() to daemonize vibe.d REST server on POSIX systems?
This minimal example is not workable:

extern (C) int fork();
int main(string[] args){
     if (fork()) return 0;

     void index(HTTPServerRequest req, HTTPServerResponse res){
         res.writeBody("Hello World!");
     }
	
     auto settings = new HTTPServerSettings;
     settings.bindAddresses = ["127.0.0.1"];

     auto router = new URLRouter;
     router.get("/", &index);

     listenHTTP(settings, router);
     runEventLoop();

     return 0;
}

Works for me.

Yes, it works on linux. But on OSX ( and probably FreeBSD ) it does not work. I think it is libevent (kpoll/kqueue) problem. The child process must call event_reinit() after fork()