Re: How to use the SPAWN pipe? [message #36493] |
Tue, 23 September 2003 06:34 |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Ricard Marxer writes:
> Having real problems with this pipe reading issue.
> I am able to read the first line of the output of my program (the program I
> spawned) but then the instruction "READF, Pipe, Line" seems to block. Is it
> because it doesn't detect the end of a line??? Can someone help me out with
> this one, please?
Reading information over pipes like this can
be difficult if you don't know what kind of
information is coming and going. In fact,
the processes on either side of the pipe can
inadvertently be put "to sleep" because they
are waiting for a piece of information. This
is likely what has happened to you. When that
happens, all is lost. :-)
The simple solution (although maybe not for you)
is to write the read/write portion of the code
in such a way that the programs on the other
end of the pipe know what is happening. In
practice this means sending the number of bytes
to read, then the bytes themselves. This makes
sure the bytes on the pipe are always consumed,
and prevents the pipe from "freezing".
Cheers,
David
--
David W. Fanning, Ph.D.
Fanning Software Consulting, Inc.
Phone: 970-221-0438, E-mail: david@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|
Re: How to use the SPAWN pipe? [message #36495 is a reply to message #36493] |
Mon, 22 September 2003 23:50  |
Ricard Marxer
Messages: 2 Registered: September 2003
|
Junior Member |
|
|
Me again,
Having real problems with this pipe reading issue.
I am able to read the first line of the output of my program (the program I
spawned) but then the instruction "READF, Pipe, Line" seems to block. Is it
because it doesn't detect the end of a line??? Can someone help me out with
this one, please? Thanks
Ricard
"Ricard Marxer" <rpm51@uow.edu.au> escribi� en el mensaje
news:bko8q7$b7e$1@spacebar.ucc.usyd.edu.au...
> Hi,
>
> I want to use the SPAWN command in IDL, to run a program under Unix that
> takes a long time to finish, but while it runs it prints information in
the
> screen. I would like to print this information in a WIDGET_LIST, so I
> thought I would have to use the SPAWN command with the UNIT keyword and
then
> run a loop that will read from the pipe and add the information to the
VALUE
> of the list. This is not a problem, the problem is how to know that the
> program has finished??? Because the last line of the program might change
> in every execution.
>
> Thanks,
> Ricard
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
>
>
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
|
|
|