*BSD News Article 1929


Return to BSD News archive

Path: sserve!manuel!munnari.oz.au!uunet!dtix!darwin.sura.net!mips!zaphod.mps.ohio-state.edu!moe.ksu.ksu.edu!hobbes.physics.uiowa.edu!news.uiowa.edu!icaen.uiowa.edu!gdcarson
From: gdcarson@icaen.uiowa.edu (Gregory Donald Carson)
Newsgroups: comp.unix.bsd
Subject: Fork/Pipe Help
Message-ID: <1992Jul14.233856.29659@news.uiowa.edu>
Date: 14 Jul 92 23:38:56 GMT
Sender: news@news.uiowa.edu (News)
Organization: Iowa Computer Aided Engineering Network, University of Iowa
Lines: 45
Nntp-Posting-Host: l_cae09.icaen.uiowa.edu

Hello;
	I have a pipe question/problem.  I have one program that generates data
in an array that I need to pass to another program through a pipe.  The program
that needs to receive the array data needs to get the x and y position in the
array and the array value at that position from the first program after it has
been forked off the first.
	So the problem/question is, how do I first set up a pipe between two 
programs like this, and then fork the second off and have it continue to get
the information generated by the first program. 
	I think it should look something like this...please mail examples if 
you can...HELP  (the system is UNIX, the language C)
first_prog()
{
	declarations, etc...
	short int array[128][128];
	int position_x, position_y, x,y;
	/* put some initial data into the array to be sent to second_prog
	   upon forking */
	/* set up the pipe here? */
	/* fork the other prog */
	fork();
	execl( second_prog(), position_x, position_y, array);

	for(x=0;x<128;x++)
	  for(y=0;y<128;y++) {
	    array[x][y] = x;
	    position_x = x;
	    position_y = y;
 /*send position_x, position_y, and array[x][y] data to second_prog*/
}

	etc...
}

second_prog(o_array,x_pos,y_pos)
short int o_array[ ][ 128 ];
int x_pos, y_pos;
{
	declarations etc...

       /* do something with initial data from frist_prog and get ready to
          receive data from pipe */
       /* get position_x, position_y, array[x][y] from first_prog */

       printf( "%d, %d position of array is %d.\n", x_pos,y_pos,o_array[x][y]);