version 1.22, 2022/12/22 19:53:23 |
version 1.23, 2023/01/10 14:19:12 |
|
|
usage(void) |
usage(void) |
{ |
{ |
fprintf(stderr, |
fprintf(stderr, |
"usage: timeout [-k time] [-s sig] [--foreground]" |
"usage: timeout [-fp] [-k time] [-s sig] duration command" |
" [--preserve-status] duration\n" |
" [arg ...]\n"); |
" command [arg ...]\n"); |
|
|
|
exit(1); |
exit(1); |
} |
} |
|
|
|
|
SIGALRM, SIGQUIT}; |
SIGALRM, SIGQUIT}; |
|
|
const struct option longopts[] = { |
const struct option longopts[] = { |
{ "preserve-status", no_argument, &preserve, 1 }, |
{ "preserve-status", no_argument, NULL, 'p'}, |
{ "foreground", no_argument, &foreground, 1 }, |
{ "foreground", no_argument, NULL, 'f'}, |
{ "kill-after", required_argument, NULL, 'k'}, |
{ "kill-after", required_argument, NULL, 'k'}, |
{ "signal", required_argument, NULL, 's'}, |
{ "signal", required_argument, NULL, 's'}, |
{ "help", no_argument, NULL, 'h'}, |
{ "help", no_argument, NULL, 'h'}, |
|
|
if (pledge("stdio proc exec", NULL) == -1) |
if (pledge("stdio proc exec", NULL) == -1) |
err(1, "pledge"); |
err(1, "pledge"); |
|
|
while ((ch = getopt_long(argc, argv, "+k:s:h", longopts, NULL)) != -1) { |
while ((ch = getopt_long(argc, argv, "+fk:ps:h", longopts, NULL)) |
|
!= -1) { |
switch (ch) { |
switch (ch) { |
|
case 'f': |
|
foreground = 1; |
|
break; |
case 'k': |
case 'k': |
do_second_kill = true; |
do_second_kill = true; |
second_kill = parse_duration(optarg); |
second_kill = parse_duration(optarg); |
|
break; |
|
case 'p': |
|
preserve = 1; |
break; |
break; |
case 's': |
case 's': |
killsig = parse_signal(optarg); |
killsig = parse_signal(optarg); |