http://qs1969.pair.com?node_id=123858


in reply to Re: bidirectional IPC (Linux)
in thread bidirectional IPC (Linux)

>...can read them when you want and you can have many pipes: one to each child.

but I have to have two pipes to each child, don't I?

>Do you need to send one message to all the clients at once?

thats right, this wont work...

>I'm not sure exactly what you need to do, but you can thread the server (that's what a lot of chat servers do)
>or you can use select(the four argument one) to decide when you need to read from a child.

hmm threads will not be present in their actual form
in future releases of perl, as I have extracted from man
thread, so i think thats not the best way to do it.
Select is then a method without fork, but I haven't
understood it completely, what does the Select do, it
determines from which socket 'data comes in', and then
reads it?

Thanks

Replies are listed 'Best First'.
Re: Re: Re: bidirectional IPC (Linux)
by traveler (Parson) on Nov 07, 2001 at 23:48 UTC
    but I have to have two pipes to each child, don't I?

    Yes. If you want to follow the rules and if you are sending data bidirectionally. Or you can use a socket. Sockets are bidirectional and work very much like pipes once established.

    thats right, this wont work...

    I'm not sure what you mean by this.

    Select is then a method without fork, but I haven't understood it completely, what does the Select do, it determines from which socket 'data comes in', and then reads it?

    No. select tells you when a filehandle is ready for reading or writing or when it has an error condition. You need to do the I/O yourself. It can be used with or without fork.

    While the implementation of threads, and maybe the syntax may change, using threads may still be your best bet.

    HTH, --traveler

      >I'm not sure what you mean by this.

      it simply means youre right, i can't send to all clients at
      once, or better i dont want to because it mostly senseless.

      >No. select tells you when a filehandle is ready for reading or writing or when it has an error condition. You need to do the I/O yourself. It
      >can be used with or without fork.

      this means, I still have to fork, and then do the IPC stuff, right?
      Maybe i really should consider threads, because i think
      using two pipes, with two extra child for each child,
      i have too much childs at the, especially if the amount of
      connections is on a normal level of 20, i would have 60
      processes, way too much...

      Thanks so far