C ++ Fork / Exec Parent Child通信

时间:2012-11-15 16:10:58

标签: java c++ fork minecraft

我正在Ubuntu上编写一个C ++控制台程序,专门管理一个游戏服务器“我的世界”,为了学习目的而编写它,对任何选项都是开放的,它必须遵循我已经完成的工作。

我想执行minecraft服务器,然后能够检查它是否还活着,我也希望能够从C ++程序向它发送命令,如“/ stop”,它将优雅地关闭它而不仅仅是用“杀”。

pid_t pid;
pid = fork();
cout << pid << endl;

switch (pid)
{
    case -1:
        break;
    case 0:
        cout << "Child Process" << endl;

        //WAITS HERE, CANT MOVE ON, IS THERE A FIX?
        execlp("java", "java", "-jar", filetoexec, "nogui");
        cerr << "Failed" << endl;
        while(true)
        {
            //WANT if (isMinecraftAlive()) echo yay!!!
            cout << "Child Tick..." << getpid() << endl;
            sleep(4);
        }
        break;
    default:
        cout << "Parent Process" << endl;
        while(true)
        {
            cout << "Parent Tick..." << getpid() << endl;
            //WANT TO SEND "/list" to CHILD and it EXEC on MINECRAFT;
            sleep(4);
        }
        //execv("test", NULL);
        break;
}

我想做什么:

在“execlp("java", "java", "-jar", filetoexec, "nogui");”之后,我希望能够对其进行IsAlive(),基本上确保服务器仍在响应。我注意到execlp在继续之前等待进程完成它正在做的事情,因为这是一个永远存在的游戏服务器。

非常感谢所有帮助,正如我上面所说,这是一项学习任务,但我对此感到难过。

0 个答案:

没有答案