![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 12 ![]() ![]() ![]() ![]() Класс: Вор Характер: Chaotic Neutral Раса: Человек NWN: Маппинг ![]() |
Вообщем, стэнд элоун ни разу не поднимал, следовательно, прошу вашей помощи, то бишь нуб гайд. (IMG:style_emoticons/kolobok_light/smile.gif)
Имеется: линукс (слакварь 10 вроде) модуль Нужно: автономная работа сервака Вопрос: что нужно скачать в каком порядке что куда подоткнуть Ну и скрипты к этому делу, чтобы при зависании или чрезмерном лагании сервака авторестарты (неплохо бы к этому делу присовокупить сохранение местоположения персонажа. (IMG:style_emoticons/kolobok_light/smile.gif) Кроме доброго слова, отблагодарить ничем не смогу. (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Blaze - Mar 22 2006, 18:43 |
![]() |
![]()
Сообщение
#2
|
|
Level 8 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
В *nix есть различные схемы мультипоточной работы.
Наиболее простая это fork() (вилка, англ.) - создание полной копии процесса-родителя. CODE void main() { int pid = fork(); if(!pid) { // pid = 0 - означает, что мы даём команды потомку } else { // pid = PID потомка, != 0, это тело родителя } } В потомок форк возвращяет 0, в родитель - PID потомка, а т.к. новый процесс является ПОЛНОЙ копией родителя, то так и отслеживают, кому какие команды выполнять. Теперь о nwserver'е... Выглядит это примерно так CODE void main() { int fd[2]; int pid; pipe(fd); pid = fork(); if(!pid) { char *nwserver[] = {"nwserver", "-module", "modulename", "-pvp", "2", "-servervault", "1"}; close(0); // отключить стандартный ввод close(1); // отключить стандартный вывод dup2(fd[1], 0); // сделать fd[1] стандартным потоком ввода execvp("./nwserver", nwserver); perror("execvp()"); // если execvp не удался, то процесс идёт дальше exit(1); // и эта } else { while(1) { sleep(14400); write(fd[0], "module modulename", strlen("module modulename")); } } } Вот так примерно (IMG:style_emoticons/kolobok_light/smile.gif) |
![]() ![]() |
Текстовая версия | Сейчас: 27th April 2025 - 09:01 |