2014-06-05 3 views
-2

표준 입력 및 출력에서 ​​읽기/쓰기가 가능한 C# 콘솔 응용 프로그램이 있습니다.C# 콘솔 응용 프로그램 표준 IO에서 읽기/쓰기가 작동하지 않습니다.

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Console application"); 

     while(true) 
     { 
      int input = Console.Read(); 

      Console.WriteLine(input.ToString()); 
     } 
    } 
} 

저는 파이프 통신을 통해 콘솔 응용 프로그램을 시작하고 읽기/쓰기가 가능한 다른 기본 응용 프로그램이 있습니다. C# 콘솔 응용 프로그램 쓰기가 외부 응용 프로그램에서 성공적으로 읽히고 외부 응용 프로그램의 초기 쓰기가 제대로 작동 한 다음 C# 콘솔 응용 프로그램에서 읽기 위해 루프가 반복됩니다. 파이프의 외부 응용 프로그램에서 쓰기가 작동하지 않습니다.

일부 운영 체제에서는 이상한 일이 발생하고 잘 작동하는 것은 거의 없습니다.

.NET Framework 4/Client Profile을 사용하여 콘솔 응용 프로그램을 컴파일합니다.

+0

여기에 세부 정보가 충분하지 않습니다. 외부 애플리케이션 용 코드를 추가 할 수 있습니까? 문제를 완전히 재현 할 수있는 방법을 알아야합니다. –

+0

@Mike 네이티브 응용 프로그램은 C# 콘솔 응용 프로그램과 파이프 통신을 수행하는 간단한 응용 프로그램입니다. 이상한 것은 몇 가지 운영 체제에서 작동하며 콘솔 응용 프로그램에서 인식 할 수없는 외부 응용 프로그램의 파이프에 대한 쓰기 작업이 거의 없습니다. .Net Framework 버전은 이러한 동작에 영향을 미칩니다. – Sandy

+0

@update .NET 3.5 런타임을 사용할 때 문제가 발생하지 않습니다. – Sandy

답변

-1

는 그런 식으로 작동합니까

static void Main(string[] args) 
{ 
    Console.SetIn(new StreamReader(Console.OpenStandardInput())); 
    while (Console.In.Peek() != -1) 
    { 
     string input = Console.In.ReadLine(); 
     Console.WriteLine(input); 
    } 
} 

를 시도?

편집 : 답변을 업데이트했습니다.

샘플 사용/출력 :

dir /B | ConsoleApplication1.exe 

가 생산 : 나는 원래 코드를하려고하면

ConsoleApplication1.exe 
ConsoleApplication1.exe.config 
ConsoleApplication1.pdb 
ConsoleApplication1.vshost.exe 
ConsoleApplication1.vshost.exe.config 
ConsoleApplication1.vshost.exe.manifest 

, 그것은 스팸 -1 지속적으로 끝납니다. 다음을 시도 할 수도 있습니다.

while (true) 
{ 
    int input = Console.Read(); 
    if (input != -1) { // -1 = no input 
     Console.WriteLine(input.ToString()); 
    } 
} 

이제 모든 문자를 별도로 처리합니다. MS에서

+0

이것은 질문에 대한 답이 아닙니다. – Matthijs

+0

@Matthijs 나는 그 질문을 오해했다. 나는 이제 나의 대답을 업데이트했다. – deherch

+0

@deherch 도움이되지 않습니다 ... – Sandy

관련 문제