Listing 1 (all_true.c)

/*
No matter what code the calling program returns, this
program will always return 0 (success).

Usage: all_true program args
Example: all_true sleep 5
*/


#include <stdio.h>
#include <signal.h>

#define RET_VALUE     0

main(argc,argv)
int argc;
char **argv;
{
process(argc,argv);
exit(RET_VALUE);
}

process(argc,argv)
int argc;
char **argv;
{
int pid;

if ((pid = fork()) == -1)
  {
  perror("all_true");
  exit(1);
  }

if (pid> 0 )
 {
 signal(SIGINT,SIG_IGN); /* Ignore interrupt key */
 while (wait( (int *) 0 ) == pid);
 return;
 }

signal(SIGINT,SIG_DFL);  /* Default interrupt key */
argv++;                  /* Point to program argument */
execvp(*argv, argv);
perror("all_true");
}


/* End of File */