테라리아라는 게임 서버 구동기 GUI만드는 중인데
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
CreateNoWindow = true
이러고 stdin이랑 stdout가져와서 출력해도 입력받는 부분이 출력이 안 되더라고
그래서 서버 구동기 부분의 소스를 봤는데
이렇게 되어 있는 부분이 문제인 것 같더라고
Write로 출력을 하기 때문에 new line이 없어서 stdout에서 출력을 못 받아오니까 그 다음에 있는 stdin에 입력하는 코드를 실행을 못 하는 거지.
그래서 winpty.NET이나 conpty를 사용하거나 파이썬에서 pywinpty를 사용하려고 했거든?
그런데 자료가 너무 없는 거야
구동기의 소스 코드가 있으니 Write를 WriteLine으로 고쳐주면 될 것 같긴 한데
그러면 나중에 배포했을 때 사람들이 사용하기 불편하니까
어떤 방법으로 이 문제를 해결해야할까?
가능하면 C#으로 해결할 수 있으면 좋을텐데
내가 묻는 게 XY Problem이 아니면 좋겠다
해당 댓글은 삭제되었습니다.
종결자로 \r\n이 없는 함수 아님?
해당 댓글은 삭제되었습니다.
ReadLine이 입력 받는 함수인 건 앎 내가 정보를 충분히 적지 않은 게 문제인 것 같네 stdoutput이벤트가 new line이 있을 때 호출되는 거라고 생각했음 그래서 구동기에서 chooseworld를 출력해주고 입력을 받아야 하는데 GUI프로그램에서 stdout의 버퍼를 안 읽으니까 출력을 못 해서 멈춘 거라고 생각했음 프로그래밍을 야매로 배운 게 문제인가?
다음부턴 제대로 공부하고 할 테니 정보 좀 부탁함
ㅇㅋ
공식 문서도 계속 보면서 했었는데 LF로 끝나지 않는 건 버퍼에서 직접 읽어와야 하는 것 같아 실제로 그렇게 해서 Choose world까지 출력하는 데는 성공했는데 입력이 안 되더라구 혹시 깃헙에 테스트 코드랑 같이 올리면 뭐가 문제일지 봐줄 수 있어?