This is looper.c in view mode; [Download] [Up]
/******************************************************************************* * The BYTE UNIX Benchmarks - Release 1 * Module: looper.c SID: 1.4 5/15/91 19:30:22 * ******************************************************************************* * Bug reports, patches, comments, suggestions should be sent to: * * Ben Smith or Tom Yager at BYTE Magazine * ben@bytepb.byte.com tyager@bytepb.byte.com * ******************************************************************************* * Modification Log: * * February 25, 1991 -- created (Ben S.) * ******************************************************************************/ char SCCSid[] = "@(#) @(#)looper.c:1.4 -- 5/15/91 19:30:22"; /* * Shell Process creation * */ #include <stdio.h> #include "timeit.c" unsigned long iter; char *cmd_argv[28]; int cmd_argc; report() { fprintf(stderr,"%ld loops\n", iter); exit(0); } main(argc, argv, env) int argc; char *argv[]; char *env[]; { int slave, count, count1, duration; int status; if (argc < 2) { printf("Usage: %s duration command [args..]\n", argv[0]); printf(" duration in seconds\n"); exit(1); } if((duration = atoi(argv[1])) < 1) { printf("Usage: %s duration command [arg..]\n", argv[0]); printf(" duration in seconds\n"); exit(1); } /* get command */ cmd_argc=argc-2; for( count=2;count < argc; ++count) cmd_argv[count-2]=argv[count]; #ifdef DEBUG printf("<<%s>>",cmd_argv[0]); for(count=1;count < cmd_argc; ++count) printf(" <%s>", cmd_argv[count]); putchar('\n'); exit(0); #endif iter = 0; wake_me(duration, report); while (1) { if ((slave = fork()) == 0) { /* execute command */ execvp(cmd_argv[0],cmd_argv); exit(0); } else if (slave < 0) { /* woops ... */ printf("Fork failed at iteration %d\n", iter); perror("Reason"); exit(2); } else /* master */ wait(&status); if (status != 0) { printf("Bad wait status: 0x%x\n", status); exit(2); } iter++; } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.