This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: 1.7.10->1.7.13 : output from .NET programs does not get through pipeline to a visual c++ program
- From: Christopher Faylor <cgf-use-the-mailinglist-please at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Thu, 19 Apr 2012 10:14:26 -0400
- Subject: Re: 1.7.10->1.7.13 : output from .NET programs does not get through pipeline to a visual c++ program
- References: <CAHxe11=J=cJnwWcRnA1Pi9CmezWw+z04-b5k4trVmE3mVbiH7A@mail.gmail.com>
- Reply-to: cygwin at cygwin dot com
On Thu, Apr 19, 2012 at 12:56:33PM +0100, somebody wrote:
>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.
Sorry but I'm not going to set up a .NET development environment to
figure out a problem. If someone else wants to provide a clue as
to what's going on, I'd appreciate it.
--
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