[net.lang.f77] pipe breaking

goon@lasspvax.UUCP (Jonny Goon) (10/28/85)

References:


                   {}
Hello,
 I am a relatively inexperienced UNIX user, and I would appreciate
 any advice on the following problem:

 I have some rather large data files stored on disk in compacted form.
 I use ccat and a pipe to feed the data file to a plotting program.
 This fortran program accepts the uncompacted data from standard input
 via an unformatted read statement and plots it; it exits from the
 plotting loop when an EOF condition is detected.  At this point I
 want the program to accept input from the keyboard; however, it 
 continues to read from the pipe.  Do you have any advice on how I
 can redirect the input once the EOF is reached?  Thanks for your support.

|----------------------------------------------------------------------------|
|				      J. Goon                                |
|				      Center for Applied Math.               |
|				      Cornell U.                             |
|				      Ithaca, N.Y. 14853                     |
|		  {decvax,ihnp4,cmcl2,vax135}!cornell!amvax!goon (USENET)    |
|                            goon%amvax@CRNLCS.BITNET (Bitnet)               |
|			     goon@amvax.tn.cornell.edu   (ARPANET)           |
|----------------------------------------------------------------------------|

woods@hao.UUCP (Greg Woods) (10/30/85)

>  This fortran program accepts the uncompacted data from standard input
>  via an unformatted read statement and plots it; it exits from the
>  plotting loop when an EOF condition is detected.  At this point I
>  want the program to accept input from the keyboard; however, it 
>  continues to read from the pipe.  Do you have any advice on how I
>  can redirect the input once the EOF is reached?  Thanks for your support.

  This one is not too hard. You can catch the EOF, close unit 5, and then 
reopen it to read from the terminal. The code looks like:

      read(5,end=100) ...
c jumps to statement label 100 when EOF sensed
      ....
 100  close(unit=5)
c  close pipe
      open(unit=5,file='/dev/tty')
c  reopen unit 5 to terminal
      read(5,...
c read from terminal

--Greg
--
{ucbvax!hplabs | allegra!nbires | decvax!noao | mcvax!seismo | ihnp4!noao}
       		        !hao!woods

CSNET: woods@NCAR  ARPA: woods%ncar@CSNET-RELAY

np42pf@sdcc12.UUCP (Pierre Flament) (11/13/85)

The following construct (sub-shell, see sh(1))
will allow redirection of the input to
the terminal after finding the eof without any special code in
the program:

(ccat file;cat) | plotting_program

A ^D should be send to end the keyboard input

thomas@utah-gr.UUCP (Spencer W. Thomas) (11/19/85)

In article <478@sdcc12.UUCP> np42pf@sdcc12.UUCP (Pierre Flament) writes:
>The following construct (sub-shell, see sh(1)) will allow redirection of
>the input to the terminal after finding the eof without any special code
>in the program:
>(ccat file;cat) | plotting_program

Even easier is
cat file - | plotting_program

(see cat(1))
-- 
=Spencer   ({ihnp4,decvax}!utah-cs!thomas, thomas@utah-cs.ARPA)
	"When wrath runs rampage in your heart you must hold still
	 that rambunctious tongue!" - Sappho