特にゲームサーバー「Minecraft」を管理するためにUbuntuでC ++コンソールプログラムを作成しています。学習目的で作成しているため、あらゆるオプションに対応しているため、私が行ったことに従う必要があります。
私はMinecraftサーバーを実行して、それがまだ生きているかどうかを確認できるようにしたいです。また、「kill」を使用するだけでなく、「/stop」などのC++プログラムからコマンドを送信して正常にシャットダウンできるようにしたいと考えています。 "。
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
上で述べたように、これは学習作業ですが、私はこれに困惑しています。