Date: Thursday May 3, 2001 @ 23:00
Author: cameron
Update of /home/netrek/cvsroot/Vanilla/robots
In directory swashbuckler.fortress.real-time.com:/var/tmp/cvs-serv3287/robots
Modified Files:
newbie.c newbiedefs.h
Log Message:
add #define NB_ROBOTS 16 to limit the number of processes spawned to 16
****************************************
Index: Vanilla/robots/newbie.c
diff -u Vanilla/robots/newbie.c:1.5 Vanilla/robots/newbie.c:1.6
--- Vanilla/robots/newbie.c:1.5 Tue Jul 11 08:49:23 2000
+++ Vanilla/robots/newbie.c Thu May 3 23:00:11 2001
@@ -28,6 +28,7 @@
#include "newbiedefs.h"
int debug=0;
+int nb_robots=0;
char *roboname = "Merlin";
@@ -86,7 +87,8 @@
int stat=0;
static int pid;
- while ((pid = WAIT3(&stat, WNOHANG, 0)) > 0) ;
+ while ((pid = WAIT3(&stat, WNOHANG, 0)) > 0)
+ nb_robots--;
HANDLE_SIG(SIGCHLD,reaper);
}
@@ -225,7 +227,7 @@
if ((QUPLAY(QU_NEWBIE_PLR) + QUPLAY(QU_NEWBIE_BOT)) >= queues[QU_PICKUP].max_slots)
stop_a_robot();
}
- else if ((QUPLAY(QU_NEWBIE_PLR) + QUPLAY(QU_NEWBIE_BOT)) < (queues[QU_PICKUP].max_slots - 1))
+ else if (((QUPLAY(QU_NEWBIE_PLR) + QUPLAY(QU_NEWBIE_BOT)) < (queues[QU_PICKUP].max_slots - 1)) && (nb_robots < NB_ROBOTS))
{
if (next_team == FED)
start_a_robot("-Tf");
@@ -403,16 +405,21 @@
start_a_robot(char *team)
{
char command[256];
+ int pid;
sprintf(command, "%s %s %s %s -h %s -p %d -n '%s' -X robot! -b -O -i",
RCMD, robot_host, OROBOT, team, hostname, PORT, namearg() );
- if (fork() == 0) {
+ pid = fork();
+ if (pid == -1)
+ return;
+ if (pid == 0) {
SIGNAL(SIGALRM, SIG_DFL);
execl("/bin/sh", "sh", "-c", command, 0);
perror("newbie'execl");
_exit(1);
}
+ nb_robots++;
}
static void start_internal(char *type)
Index: Vanilla/robots/newbiedefs.h
diff -u Vanilla/robots/newbiedefs.h:1.2 Vanilla/robots/newbiedefs.h:1.3
--- Vanilla/robots/newbiedefs.h:1.2 Thu Jul 6 09:53:41 2000
+++ Vanilla/robots/newbiedefs.h Thu May 3 23:00:11 2001
@@ -48,5 +48,7 @@
#define QUPLAY(A) (queues[A].max_slots - queues[A].free_slots)
+#define NB_ROBOTS 16
+
#endif /* _h_newbiedefs */