home *** CD-ROM | disk | FTP | other *** search
- /*
- * Benchmark program to calculate exec
- * overhead (approximately). Process
- * forks and execs "null" test program.
- * The time to run the fork program should
- * then be deducted from this one to
- * estimate the overhead for the exec.
- */
-
- main(argc, argv)
- char *argv[];
- {
- register int nexecs, i;
- char *cp, *sbrk();
- int pid, child, status, brksize;
-
- if (argc < 3) {
- printf("usage: %s number-of-execs sbrk-size job-name\n",
- argv[0]);
- exit(1);
- }
- nexecs = atoi(argv[1]);
- if (nexecs < 0) {
- printf("%s: bad number of execs\n", argv[1]);
- exit(2);
- }
- brksize = atoi(argv[2]);
- if (brksize < 0) {
- printf("%s: bad size to sbrk\n", argv[2]);
- exit(3);
- }
- cp = sbrk(brksize);
- if ((int)cp == -1) {
- perror("sbrk");
- exit(4);
- }
- for (i = 0; i < brksize; i += 1024)
- cp[i] = i;
- while (nexecs-- > 0) {
- child = fork();
- if (child == -1) {
- perror("fork");
- exit(-1);
- }
- if (child == 0) {
- execv(argv[3], argv);
- perror("execv");
- _exit(-1);
- }
- while ((pid = wait(&status)) != -1 && pid != child)
- ;
- }
- exit(0);
- }
-