[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to spawn a server?



On Tue, 10 Sep 2002, Katie Lucas wrote:

>On Mon, Sep 09, 2002 at 02:28:09PM +0200, Francesco Orsenigo wrote:
>> 
>> My game works on a tight server/client system.
>> This means that the player usually needs to run only the client.
>> But when the player chooses to Host a game, the client program must create a 
>> server and connect to it immediatly.
>> At the time, the program works this way: as soon as the program is launched, 
>> it creates a pipe and a socketpair, then forks.
>> Server is controlled with the pipe, and initializes whenever needed.
>> When pipe is severed, the server closes.
> 
>> This seems to have 2 drawbacks:
>> 1) A latent server must be always spawned, even if it won't be used.
>> That should not be critical, since while latent the server does nothing.
>> 2) pipe(), socketpair() and fork() are not very portable; alternative methods 
>> would require to spawn the server when is needed, and not at program 
>> initialization....
>> 
>> I was thinking to pipe(), socketpair() and then fork() only when i really 
>> need a server, but i don't know how does fork() works...
>> If I fork() a program with lots af allocated memory, low-level hardware 
>> access, and lots of open descriptors, all this will be copied?
>
>Why not fork, exec the server executable (which will clear out all the
>open stuff) and then have the server open a port and have the clients
>connect to that?

fork() isn't too portable. Not if we speak Windows.

-- 
  "You can't trample infidels when you're a tortoise. I mean, all you could
                  do is give them a meaningful look."
                                              -- Terry Pratchett, Small Gods