Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

nonexistent pipe

Help
r corak
2007-04-20
2013-05-14
  • r corak
    r corak
    2007-04-20

    On WindowsXP.
    I have written a pipe, meaning input is piped from some other program and output is piped to some other program.  E.g. SET -> my pipe -> MORE.
       SET  |  LOCATE.RXP /thing/ | MORE
    I have filetype RXP action RUN mapped to
       "c:\Regina\regina.exe" -p "%1" %*
    If I enter the commands as shown above, I get lots of error messages (way more than shown here)
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       REXX-RegThe process tried to write to a nonexistent pipe.
       ina_3.3(MT)The process tried to write to a nonexistent pipe.
        5.00 25The process tried to write to a nonexistent pipe.
        Apr 2004
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
       The process tried to write to a nonexistent pipe.
    Notice in the middle of all this is the REXX version that I "lineout()" from LOCATE.RXP.
    If I am explicit in the REXX command, this error doesn't happen.  These commands are fine.
       set | rexx.exe d:\cmd\pipes\locate.rxp -version /mks/
       set | regina.exe d:\cmd\pipes\locate.rxp -version /mks/
    Even Object Rexx is happy.
       set | "c:\Program Files\Objrexx\rexx.exe" d:\cmd\pipes\locate.rxp -version /mks/
    Could anybody explain "why" to me?
    Thanks.

     
    • r corak
      r corak
      2007-06-21

      Two months, and no comments.
      I'm hoping somebody can offer advice.

       
    • Mike Protts
      Mike Protts
      2007-06-25

      I'm not sure if this is a rexx or windows problem.

      My understanding of windows is that if you use implicit execution then this will execute in a new process which may mess up pipes.

      It would help to separate the error output so maybe execute as:
      SET | LOCATE.RXP /thing/ >c:\out.txt 2>c:\err.txt

      Also maybe posting the code would help.

      Cheers
      Mike

       
      • r corak
        r corak
        2007-06-25

        I've compressed the program (loctest.rxp) into the following 3 lines:
        /* */
        trace i
        return

        This is what I see when I test it:
        c:\>set | loctest
             3 *-* return

        Press ENTER key to exit...The process tried to write to a nonexistent pipe.
        The process tried to write to a nonexistent pipe.
        The process tried to write to a nonexistent pipe.
        The process tried to write to a nonexistent pipe.
        The process tried to write to a nonexistent pipe.

        and so on.  I've deleted many of the "nonexistent" lines, but that's all.  Everything that you see here, from "c:" onward, is copy-pasted from the DOS window.

         
        • Mark Hessling
          Mark Hessling
          2007-06-25

          This is a bug in the Windows cmd.exe and command.com shells.

          It was supposed to be fixed:
          http://support.microsoft.com/default.aspx?kbid=321788

          but it appears that it was only fixed for stdout; not stdin.

          If you do a Google search for:
          "The process tried to write to a nonexistent pipe"

          you will find similar bug reports for perl, python and ruby. I also tried your simple test program with ooRexx; same problem.

          I tested your cut down version against JPSoft 4NT; the enhanced CMD.EXE and it does not suffer the same problem.

           
          • r corak
            r corak
            2007-06-28

            thanks for the definitive word

             
          • r corak
            r corak
            2007-06-29

            Not done yet.
            On WinXP Pro, I get different results.  Filetype RXP means for me "Rexx Pipe".  PATH includes the directory for LOCTEST.RXP.  PATHEXT includes RXP.

            With the file association for RXP = "c:\program file\objrexx\rexx.exe" "%1" %*
            c:\>set path | loctest /;/
                 3 *-* return

            With the file association for RXP = "c:\regina\regina.exe" "%1" %*
            c:\>set path | loctest /;/
                 3 *-* return
            The process tried to write to a nonexistent pipe.
            The process tried to write to a nonexistent pipe.