|
|
1.1 ! root 1: static char *sccsid = "@(#)kill.c 4.2 (Berkeley) 10/10/80"; ! 2: /* ! 3: * kill - send signal to process ! 4: */ ! 5: ! 6: #include <signal.h> ! 7: #include <ctype.h> ! 8: ! 9: char *signm[] = { 0, ! 10: "HUP", "INT", "QUIT", "ILL", "TRAP", "IOT", "EMT", "FPE", /* 1-8 */ ! 11: "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", 0, /* 9-16 */ ! 12: "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "TINT", "XCPU", /* 17-24 */ ! 13: "XFSZ", 0, 0, 0, 0, 0, 0, 0, /* 25-31 */ ! 14: }; ! 15: ! 16: main(argc, argv) ! 17: char **argv; ! 18: { ! 19: register signo, pid, res; ! 20: int errlev; ! 21: extern char *sys_errlist[]; ! 22: extern errno; ! 23: ! 24: errlev = 0; ! 25: if (argc <= 1) { ! 26: usage: ! 27: printf("usage: kill [ -sig ] pid ...\n"); ! 28: printf("for a list of signals: kill -l\n"); ! 29: exit(2); ! 30: } ! 31: if (*argv[1] == '-') { ! 32: if (argv[1][1] == 'l') { ! 33: for (signo = 1; signo <= NSIG; signo++) { ! 34: if (signm[signo]) ! 35: printf("%s ", signm[signo]); ! 36: if (signo == 16) ! 37: printf("\n"); ! 38: } ! 39: printf("\n"); ! 40: exit(0); ! 41: } else if (isdigit(argv[1][1])) { ! 42: signo = atoi(argv[1]+1); ! 43: if (signo < 1 || signo > NSIG) { ! 44: printf("kill: %s: number out of range\n", ! 45: argv[1]); ! 46: exit(1); ! 47: } ! 48: } else { ! 49: char *name = argv[1]+1; ! 50: for (signo = 1; signo <= NSIG; signo++) ! 51: if (signm[signo] && !strcmp(signm[signo], name)) ! 52: goto foundsig; ! 53: printf("kill: %s: unknown signal; kill -l lists signals\n", name); ! 54: exit(1); ! 55: foundsig: ! 56: ; ! 57: } ! 58: argc--; ! 59: argv++; ! 60: } else ! 61: signo = SIGTERM; ! 62: argv++; ! 63: while (argc > 1) { ! 64: if (**argv<'0' || **argv>'9') ! 65: goto usage; ! 66: res = kill(pid = atoi(*argv), signo); ! 67: if (res<0) { ! 68: printf("%u: %s\n", pid, sys_errlist[errno]); ! 69: errlev = 1; ! 70: } ! 71: argc--; ! 72: argv++; ! 73: } ! 74: return(errlev); ! 75: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.