On Tue, Dec 31, 2013 at 9:20 AM, Tony Seo <tonys...@gmail.com> wrote:
> But What I really want to know is why the server process always waited in
> the accept stage, when I executed client process for the first after system
> boot.

It may hang in accept() if the service is Accept=true and the daemon
still tries to accept(). It may also hang on accept() if it's simply
blocking until the next connection.

> As you know that socket activation makes a service related with socket unit
> executed with connection of client process.
> If the procedure for socket activation would run like that, the server
> process executed for the first may not prepare the passive connection which
> should be set beforehand because of client connection.
> In my view, this waiting problem will be continue as far as the server
> process is simultaneously executed with the client process.
>
> what do you think about it?

There is no race condition, if that's what you mean. systemd waits
using epoll for the appropriate event for starting a child daemon (for
Accept=false) or child processes (for Accept=true). For Accept=false,
it's the same effect as if a daemon used epoll on the listener socket
and only ran accept() in a callback, just possibly with a bit more
delay.
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to