Annotation of 43BSD/bin/kill.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)kill.c      4.4 (Berkeley) 4/20/86";
                      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", "URG",   /* 9-16 */
                     12: "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "IO", "XCPU",  /* 17-24 */
                     13: "XFSZ", "VTALRM", "PROF", "WINCH", 0, "USR1", "USR2", 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 = 0; 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 < 0 || 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 = 0; 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 (!(isdigit(**argv) || **argv == '-'))
                     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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.