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.