|
|
1.1 root 1: static char *sccsid = "@(#)kill.c 4.2 (Berkeley) 10/9/80";
2: /*
3: * kill - send signal to process
4: */
5:
6: #include <signal.h>
7: #include <ctype.h>
8:
9: char *signm[NSIG+1] = { 0,
10: "SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGTRAP", "SIGIOT", "SIGEMT", "SIGFPE", /* 1-8 */
11: "SIGKILL", "SIGBUS", "SIGSEGV", "SIGSYS", "SIGPIPE", "SIGALRM", "SIGTERM", 0, /* 9-16 */
12: "SIGSTOP", "SIGTSTP", "SIGCONT", "SIGCHLD", "SIGTTIN", "SIGTTOU", "SIGTINT", "SIGXCPU", /* 17-24 */
13: "SIGXFSZ" /* 25- */
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: int i = 0;
34: for (signo = 1; signo <= NSIG; signo++)
35: if (signm[signo]) {
36: printf("%s ", signm[signo]);
37: if (++i%8 == 0)
38: printf("\n");
39: }
40: if(i%8 !=0)
41: printf("\n");
42: exit(0);
43: } else if (isdigit(argv[1][1])) {
44: signo = atoi(argv[1]+1);
45: if (signo < 0 || signo > NSIG) {
46: printf("kill: %s: number out of range\n",
47: argv[1]);
48: exit(1);
49: }
50: } else {
51: char *name = argv[1]+1;
52: for (signo = 1; signo <= NSIG; signo++)
53: if (signm[signo] && (
54: !strcmp(signm[signo], name)||
55: !strcmp(signm[signo]+3, name)))
56: goto foundsig;
57: printf("kill: %s: unknown signal; kill -l lists signals\n", name);
58: exit(1);
59: foundsig:
60: ;
61: }
62: argc--;
63: argv++;
64: } else
65: signo = SIGTERM;
66: argv++;
67: while (argc > 1) {
68: if ((**argv<'0' || **argv>'9') && **argv!='-')
69: goto usage;
70: res = kill(pid = atoi(*argv), signo);
71: if (res<0) {
72: printf("%u: %s\n", pid, sys_errlist[errno]);
73: errlev = 1;
74: }
75: argc--;
76: argv++;
77: }
78: return(errlev);
79: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.