Здравствуйте! Я на php написал скрипт управлением игровым сервером.
Решил под него написать сервер на c++.
Все как бы не плохо, кроме одного, когда я запускаю игровой сервер через ПУ и останавливаю свой сервер, игровой начинает висеть на порту сервера.
И что бы заново запустить сервер управления нужно убить сервер игры.
Помогите решить проблему.
Функция exec:
string exec(const char *cmd) {
char buffer[2048];
std::string result = "";
FILE *pipe = popen(cmd, "r");
if (!pipe) throw std::runtime_error("popen() failed!");
try {
while (!feof(pipe)) {
if (fgets(buffer, 2048, pipe) != NULL)
result += buffer;
}
} catch (...) {
pclose(pipe);
throw;
}
pclose(pipe);
return result;
}
Запуск сервера:
server = new net::serversocket(8888);
while (true) {
net::socket *client = server->accept();
string readMessage = "";
string sendMessage = "";
client->read(readMessage);
std::vector <std::string> command = split(readMessage, '|');
int startI = 0;
if (command[0] == "start") {
int forkStartServer = fork();
if(forkStartServer < 0){
}else if (forkStartServer == 0){
setsid();
forkStartServer = fork();
if(forkStartServer < 0){
}else if (forkStartServer == 0){
exec(command[1].c_str());
}
}
sendMessage = "start 1";
client->send(sendMessage);
client->close();
}
}
Команда ss -p: После остановки сервера управления и при запущенном игровом сервере заполнена такими записями
tcp CLOSE-WAIT 1 0 127.0.0.1:8888 127.0.0.1:35044 users:(("gs",pid=17536,fd=13),("glinkd",pid=17535,fd=13),("gdeliveryd",pid=17526,fd=13),("gfactiond",pid=17524,fd=13),("gacd",pid=17523,fd=13),("java",pid=17521,fd=13),("gamedbd",pid=17517,fd=13),("uniquenamed",pid=17504,fd=13),("logservice",pid=17497,fd=13))
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Делаю одну программу для эксперимента и возникла одна ошибкаСделал новый проект и оставил ту же функцию и те же свойства, а ошибка так и осталась,...
Требуется протестировать программуПрограмма создает шары разных цветов и передвигает их внутри допустимой области с разными скоростями
В онлайн компиляторе код (http://cppsh/4gnfb) при вводе:
Не могу понять почему переменные "захлебываются" после введения второй и тдзаписи