C++ 读取程序输出C++;

C++ 读取程序输出C++;,c++,C++,我有一个TF2服务器,如果我不在时更新了TF2,服务器将输出: 您的服务器已过期。请更新并重新启动 如何用C++ + < / P>观察输出? 这个想法是: 1. if (output == "Your server is out of date. Please update and restart.") 2. kill the application 3. run update.bat 4. start observing

我有一个TF2服务器,如果我不在时更新了TF2,服务器将输出:

您的服务器已过期。请更新并重新启动

如何用C++ + < / P>观察输出? 这个想法是:

         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
我的想法可能吗

那基本上是一个看门狗

可以使用管道完成解决方案:

将C++服务器应用程序输出到标准输入(用CIN读取它)。例如,如果您的TF2服务器是TF2.exe,C++应用程序是CPP.exe:

tf2.exe | cpp.exe

<> P>你需要每次重新启动服务器时再次执行这个命令(这是因为在命令之后重新运行它,所以退出C++应用程序)。< /P>是否必须用C++完成?这似乎是使用shell/批处理脚本更容易完成的事情。我建议在服务器启动时将服务器输出重定向到某个文件,然后编写一个脚本,读取该文件并查找更新消息,然后删除该文件,运行update.bat,并在找到更新消息时重新启动服务器。当然,如果你想,你也可以在C++中做类似的事情。你真的需要杀死服务器吗?难道你不能从服务器内部运行update.bat并继续观察吗?shell脚本听起来是一种不那么痛苦的处理方式,特别是因为它允许你轻松地捕获正在运行的进程的PID,您可以立即访问进程信号发送工具,如
kill
@aroth:如果我将输出重定向到.txt(通过tf2.exe>status.txt)文件,我将无法再与服务器交互。@StevieG:是的,您必须终止、更新并再次运行它。我该怎么做?我找不到一个简单的解释。我不知道还有什么需要进一步解释<代码>字符串输入=”;while(input!=“您的服务器已过期。请更新并重新启动。”{cin>>input;}运行_batch();退出() BTW,正如阿劳斯所说,C++是一个坏的选择。脚本可以做得更好(我推荐Bash或Perl)。