1.7.10->1.7.13 : output from .NET programs does not get through pipeline to a visual c++ program

cygwin@alanhowells.e4ward.com cygwin@alanhowells.e4ward.com
Thu Apr 19 11:58:00 GMT 2012


Hi all,

This started in 1.7.10 and I thought this may be fixed in 1.7.12 due
to emails in the mailing list:
http://sourceware.org/ml/cygwin/2012-03/msg00666.html

But there still seems to be a problem piping from a .net console
application to a visual c++ console application.

Using the following simple C# program complied using "csc /optimize
/target:exe /out:./consoleout.exe Program.cs"

>>>> Begin Program.cs
namespace consoleout
{
    using System;

    internal static class Program
    {
        private static void Main(string[] args)
        {
            foreach (var arg in args) {
                Console.Out.WriteLine(arg);
            }
        }
    }
}
<<<< End Program.cs

I can use this to output to cygwin exes OK
$ ./consoleout.exe Hello There | cat
Hello
There
$ ./consoleout.exe Hello There | grep ll
1:Hello
$

I also created a visual c++ executable like the simple one below
compiled with "cl /EHs readin.cxx /link"

>>>> Begin readin.cxx
#include <string>
#include <iostream>

int
main(int argc, char** argv)
{
    static_cast<void>(argc);
    static_cast<void>(argv);
    std::string buf;
    buf.reserve(1024);
    while (std::getline(std::cin, buf, '\n')) {
        std::cout << buf << '\n';
    }
    return EXIT_SUCCESS;
}
<<<< End readin.cxx

I can use this to output anything read in
$ echo Hello | ./readin.exe
Hello
$ cat 'readin.cxx' | ./readin.exe
#include <string>
#include <iostream>

int
main(int argc, char** argv)
{
    static_cast<void>(argc);
    static_cast<void>(argv);
    std::string buf;
    buf.reserve(1024);
    while (std::getline(std::cin, buf, '\n')) {
        std::cout << buf << '\n';
    }
    return EXIT_SUCCESS;
}
$

But when combining the two, nothing happens.
$ ./consoleout.exe Hello There | ./readin.exe
$

It "seems" as though the console out from the .net is not being
correctly piped through to a vc++ program. I know that is a strange
defect given all the other combinations work.

The reverse works i.e. output from a visual c++ console application is
piped correctly to a .net console application.

This worked prior to 1.7.10 (1.7.9 and before).

I am sorry that I cannot point to an area in the Cygwin code or
suggest a fix, but I am hoping this is enough of a description to help
someone find out what the issue is.

Thanks for your time,


Alan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cygcheck.out
Type: application/octet-stream
Size: 81470 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20120419/81631dc6/attachment.obj>
-------------- next part --------------
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


More information about the Cygwin mailing list