18 #include <my_global.h> 
   21 #include <my_getopt.h> 
   25 static const char *VER= 
"1.1";
 
   26 static char *progname;
 
   27 static my_bool verbose;
 
   31 static struct my_option my_long_options[] =
 
   33   {
"help", 
'?', 
"Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
 
   35   {
"help", 
'I', 
"Synonym for -?.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
 
   38    "Be more verbose. Give a warning, if kill can't handle signal 0.", 
 
   39    &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
 
   40   {
"version", 
'V', 
"Print version information and exit.", 0, 0, 0,
 
   41    GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
 
   42   { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
 
   46 get_one_option(
int optid, 
const struct my_option *opt __attribute__((unused)),
 
   47                char *argument __attribute__((unused)))
 
   51     printf(
"%s version %s by Jani Tolonen\n", progname, VER);
 
   61 int main(
int argc, 
char *argv[])
 
   63   int pid= 0, t= 0, sig= 0;
 
   67   if (handle_options(&argc, &argv, my_long_options, get_one_option))
 
   69   if (!argv[0] || !argv[1] || (pid= atoi(argv[0])) <= 0 ||
 
   70       (t= atoi(argv[1])) <= 0)
 
   74     if (
kill((pid_t) pid, sig))
 
   79           printf(
"WARNING: kill couldn't handle signal 0, using signal 1.\n");
 
   93   printf(
"%s version %s by Jani Tolonen\n\n", progname, VER);
 
   94   printf(
"usage: %s [options] #pid #time\n\n", progname);
 
   95   printf(
"Description: Waits for a program, which program id is #pid, to\n");
 
   96   printf(
"terminate within #time seconds. If the program terminates within\n");
 
   97   printf(
"this time, or if the #pid no longer exists, value 0 is returned.\n");
 
   98   printf(
"Otherwise 1 is returned. Both #pid and #time must be positive\n");
 
   99   printf(
"integer arguments.\n\n");
 
  100   printf(
"Options:\n");
 
  101   my_print_help(my_long_options);