2013-10-02 1 views
0

각 바이트를 읽는 데 문제가 있습니다. 다른 응용 프로그램에서 C#으로 stdin으로갑니다.각 바이트를 stdin에서 읽는 방법 및 C에서 처리하기 #

코드는 간단하다 : 나는이 일을해야한다고 생각하는 방법

Stream instrm=Console.OpenStandardInput(); 
while(true){ 
    int b=instrm.ReadByte(); 
    Environment.Exit(1); 
} 

: instrm에는 바이트 될 것입니다 - 응용 프로그램이 종료됩니다. 그러나 응용 프로그램에 바이트를 발생 시키면 아무 일도 일어나지 않습니다. 내가 잘못하고있는 것입니까, 아니면 무엇입니까?

 static void Main(string[] args) { 
      while(true) { 
       var k = Console.ReadKey(); 
       Environment.Exit(1); 
       } 
      } 

C#을 기반으로 유니 코드 및 스트림은 일반적으로 인코딩하는 동안 UTF-8은 여전히 ​​읽기 바이트의 습관을하지 않으려는 : 어떤 단서 ...

+1

"stdin in C# 다른 응용 프로그램에서"코드가 자신의 표준 입력을 다시 여는 것을 보여줍니다 ... 어느 쪽이 맞습니까? –

+0

stdin을 사용하여 두 개의 응용 프로그램에서 다른 응용 프로그램에 바이트를 발생시킵니다. 위의 코드는 수신기의 예입니다 (C#으로 작성) 내 생각 엔 stdin 스트림을 열고 데이터를 청취하는 것입니다. –

+0

그 코드는 나에게 잘 보이고 (또한 결코 시도하지 않았습니다) ... 'Console.ReadXXXX'가 있어야합니다 읽기에는 충분할 것입니다. (저는 개인적으로 비 텍스트를이 방법으로 읽으 려하지 않을 것입니다.)하지만 실제로 보낸 사람에게 보낼 코드를 보여주십시오. –

답변

0

나를위한 또 다른 해결책이 있습니다 : .net 버전 3.5 이하를 사용하여 프로젝트를 컴파일하십시오.이 경우 모든 것이 예상대로 작동하기 시작합니다.

0

이보십시오. 또한 다른 콘솔 읽기 메소드는 개행을 입력 할 때까지 데이터를 가져 오지 않습니다 (백업하려는 경우에 대비하여).

정말 사용하고자하는 것이 파이프인지 궁금합니다.

+0

내가 파이프를 사용할 때, 또한 nothig happends ... Maby 나는 잘못하고있다. 논리는 같다. anonymousPipeServerStream을 만들고 while (true)에서 그 서버로부터 바이트를 읽는다. –

+0

MSDN 예제에서와 같이 파이프를 다시 시도한다. 그 시작 작업! =) 감사합니다. –