On Sat, 2003-10-25 at 06:40, Kostas Oikonomou wrote:
> (If you receive this twice, please excuse the double post. I'm straightening out 
> some trouble
> with my subscription to the list.)
> 
> I'm having some problems with pipes on Solaris.
> Here is a very simple example, the tests/posix/spawn.icn program:
> 
> procedure main()
>      L := pipe()  | stop("Couldn't open pipe: ", &errortext)
>      system("/bin/ls -l test-dir &", , L[2])
>      system("/bin/cat -n &", L[1])
>      close(L[1])
>      close(L[2])
>      write("everything written to pipe.")
>      delay(1000)
> end
> 
> This produces:
> 
> bash-2.05$ ./spawn
> everything written to pipe.
> bash-2.05$
> 
> No output from "cat".
> 
> Can anyone else verify/replicate this problem?
> My unicon is compiled from CVS as of two days ago.

I can verify that this works the same way under Linux,
and appears to be a combination of problems.  The
following rewrite works:

procedure main()
    L := pipe()  | stop("Couldn't open pipe: ", &errortext)
    system("/bin/ls -l test-dir &", , L[2])
    write("everything written to pipe.")
    close(L[2])
    system("cat ", L[1], &output)
    close(L[1])
end

There are two changes that are significant:

(1) The second system does not work if the command
     is run in the background, so I assume the act
     of putting it into the background is breaking
     the file descriptor connections (the 'cat'
     program runs, but stops immediately on EOF)

(2) The output pipe has to be closed before running
     the 'cat'.  In my test case I think this is
     because the output of the 'ls' is insufficient
     to cause a buffer write and so the close(L[2])
     is required to ensure that the write buffer
     gets sent down the pipe.

Offhand, I'd say that's a bug in Unicon...
-- 
Steve Wampler <[EMAIL PROTECTED]>


-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/
_______________________________________________
Unicon-group mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/unicon-group

Reply via email to