0

我想为我的游戏服务器创建一个简单的处理程序。它将直接读取控制台并采取我想要的任何操作。但!我无法将服务器的输出传递给我的 exe 或 txt。

ping google.com > ping.log

它工作正常,所有内容都将记录在我的日志文件中。我还创建了一个 exe,可以通过这种方式读取输出数据:

ping google.com | my.exe

它也可以正常工作,我的exe的内容是:

#include <iostream>
#include <windows.h>

using namespace std;

int main() {
    string input = "";
    while(cin) {
        getline(cin, input);
        cout << input << endl;
    };
    system("pause");
}

它逐行显示所有内容。

问题出在 jampded.exe 上。如果我使用批处理文件启动它,它会在控制台窗口中输出,但我无法将它传递给我的日志文件或 my.exe。我不知道。

我把 cout-s 放在我的代码中,所以它显示它卡在 while 循环中。getline 等待 cin,但没有通过.. 但是为什么呢?

4

2 回答 2

0

你的程序可以stderr用来输出数据。

尝试替换jampded.exe | yourprogram.exejampded.exe 2| yourprogram.exe

于 2013-06-12T11:44:16.770 回答
0

我对 jampded 不熟悉,但通常情况下,服务器会向控制台输出一些启动消息,然后将自身与控制台输入/输出分离,因此它可以在后台运行。任何进一步的消息都可以写入日志文件。

您可能会被命令行或配置文件选项卡住以继续写入控制台。或者您可以阅读日志文件。(为此,我通常使用 gnuwin32 文件 utils 中的“tail.exe -f”。)

在 google 上快速搜索还显示有一个名为 jamp.exe 的非专用服务器版本。出于测试目的,它可以提供更大的灵活性来捕获输出。

于 2013-06-12T13:33:10.880 回答