2011-08-23 4 views
0

은 내가 TF2 서버를 가지고 TF2는 내가 떠나있는 동안 업데이트되는 경우, 서버가 출력됩니다읽기 프로그램 출력 C++

서버가 최신입니다. 업데이트하고 다시 시작하십시오.

어떻게하면 C++로 출력을 관찰하고 읽을 수 있습니까?

아이디어는 다음과 같습니다

  1. if (output == "Your server is out of date. Please update and restart.") 
     2. kill the application 
     3. run update.bat 
     4. start observing again 

내 생각은 가능합니까? 기본적으로 감시

this is how server window looks like, just imagine that the last line says: "Your server is out of date. Please update and restart."

+3

C++로 수행해야합니까? 이것은 쉘/배치 스크립트로 더 쉽게 수행 할 수있는 종류의 것 같습니다. 서버 시작시 서버 출력을 일부 파일로 리디렉션 한 다음 파일을 읽고 업데이트 메시지를 찾은 다음 파일을 삭제하고 update.bat를 실행하고 서버를 찾은 경우 서버를 다시 시작하는 스크립트를 작성하는 것이 좋습니다. 메시지를 업데이트하십시오. 물론 원한다면 C++에서 비슷한 일을 할 수 있습니다. – aroth

+0

정말 서버를 죽여야합니까? 서버에서 update.bat를 실행하고 계속 관찰 할 수는 없습니까? – StevieG

+0

쉘 스크립트는 이것을 다루는 고통스럽지 않은 방법으로 들릴 것입니다. 특히, 실행중인 프로세스의 PID를 쉽게 캡처 할 수 있고,'kill '과 같은 프로세스 시그널링 도구에 즉각적으로 접근 할 수 있기 때문에. –

답변

1

.

해결책이 배관 사용하여 수행 할 수 있습니다 :

파이프하여 C++ 응용 프로그램에서 표준 입력에 서버 출력을 (할 것 CIN로 읽기).

tf2.exe | cpp.exe 

당신은 매번 서버를 다시 시작하고 다시이 명령을 실행해야합니다합니다 (C++ 응용 프로그램 후 종료 포함됩니다 : 당신의 TF2 서버가 tf2.exe이며, 예를 들어, C++ 응용 프로그램은 cpp.exe입니다 명령어에 의해 재실행 될 것이기 때문에 그렇게한다).

+0

그리고 어떻게해야합니까? 나는 간단한 설명을 찾을 수 없다. Thx – Hami

+0

나는 무엇을 더 설명해야하는지 모른다. 'string input = ""; while (input! = "서버가 오래되었습니다. 업데이트하고 다시 시작하십시오.") { cin >> input; } run_batch(); exit();' Btw는 aroth가 말했듯이, C++은 이것에 대한 나쁜 선택입니다. 스크립트가이 작업을 더 잘 수행 할 수 있습니다 (Bash 또는 Perl 권장). – m0skit0