Calling a binary from C (whilst sharing file descriptors)
===

I'm playing around with sycalls, and have just written codes along the lines of 



	/* Clone the process and launch Something */
	child_stack = (void *) malloc(max_memory);
	args = malloc(2 * sizeof (int **));

	args[0] = in_socket_fds;
	args[1] = out_socket_fds;

	clone(foo, child_stack + max_memory ,CLONE_FILES|CLONE_VM|CLONE_IO|CLONE_FS, (void *) args);

	wait();


where the foo function is : 

        int foo(int** args) {
	     fprintf(stderr, "Hello world %d %d", args[0][0], ags[1][0]);
	     _exit(0);
        }

What I'd really like to do is call a binary from the foo function.

        int foo(int** args) {
	     system(start program foo)
	     _exit(0);
        }
This binary should share the same file descriptor table (hence the use of clone previously). The code above is incorrect, since I don't think system allows to share the file descriptor table. ( I don't want copies of the fds, I really want to be able to read/write them) These fds are sockets.

        int foo(int** args) {
	     system(start program foo)
	     _exit(0);
        }

How can I make the clone command call a binary rather than a function? (is this even possible), or use the system call whilst sharing file descriptors?

Thanks
