[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2005-02-25 (10:22) |
From: | Micha <micha-1@f...> |
Subject: | fork question... |
hi, below is a code piece of the ocaml-book. What I don't understand is why is there the second fork() ? Maybe that's a Unix question, but I saw it the first time in the ocaml book :-) Michael let establish_server server_fun sockaddr = let domain = domain_of sockaddr in let sock = Unix.socket domain Unix.SOCK_STREAM 0 in Unix.bind sock sockaddr ; Unix.listen sock 3; while true do let (s, caller) = Unix.accept sock in match Unix.fork() with 0 -> if Unix.fork() <> 0 then exit 0 ; (* <<<< ???? *) let inchan = Unix.in_channel_of_descr s and outchan = Unix.out_channel_of_descr s in server_fun inchan outchan ; close_in inchan ; close_out outchan ; exit 0 | id -> Unix.close s; ignore(Unix.waitpid [] id) done ;;