Hi

I am creating a program that can support piping between any number of processes. For 2 processes, you create 1 pipe, and use it between them.

However, for 3 or more pipes, this method will not work because of writing to a pipe while you still need the old one. Example:

http://img8.imageshack.us/img8/3145/pipesf.png

If you write to pipe[1] again (the red part), it will overwrite the previously written information, won't it?

What is the proper way to do this?

-------------------------

I have found that you can just create 1000 pipes or something like in the example below:

Code:
http://www.cs.loyola.edu/~jglenn/702/S2005/Examples/dup2.html

  int pipes[4];
  pipe(pipes); // sets up 1st pipe
  pipe(pipes + 2); // sets up 2nd pipe

  // we now have 4 fds:
  // pipes[0] = read end of cat->grep pipe (read by grep)
  // pipes[1] = write end of cat->grep pipe (written by cat)
  // pipes[2] = read end of grep->cut pipe (read by cut)
  // pipes[3] = write end of grep->cut pipe (written by grep)
However, since I need to be able to support ANY number of pipes, and not just 2 or 3, I do not want to do this.

Does anyone know how this can be achieved properly?

Can I do something like this?

Code:
int old_write_pipe = mypipes[1]; // save the old write pipe
int new_write_pipe; // new write pipe

mypipes[1] = new_write_pipe; // replace the old write pipe in the array with a new file descriptor

pipe(mypipes);
Anyone have any insight?