pdp11v/usr/src/cmd/kill.c
/* @(#)kill.c 1.1 */
/*
** kill - send signal to process
*/
#include <stdio.h>
#ifdef RT
#include <signal.h>
#include <errno.h>
#else
#include <signal.h>
#include <sys/errno.h>
#endif
main(argc, argv)
char **argv;
{
register signo, pid, res;
int errlev = 0, neg = 0, zero = 0;
extern errno;
char *msg;
if (argc <= 1)
usage();
if (*argv[1] == '-') {
signo = atoi(argv[1]+1);
argc--;
argv++;
} else
signo = SIGTERM;
argv++;
while (argc > 1) {
if (**argv == '-') neg++;
if (**argv == '0') zero++;
pid = atoi(*argv);
if ( ((pid == 0) && !zero)
|| ((pid < 0) && !neg)
#ifndef RT
|| (pid > 32000)
|| (pid < -32000)
#endif
) usage();
res = kill(pid, signo);
if (res<0) {
if(pid <= 0) {
pid = abs(pid);
msg = "not a killable process group";
}
else if (errno == EPERM)
msg = "permission denied";
else if (errno == EINVAL)
msg = "invalid signal";
else msg = "no such process";
fprintf(stderr,"kill: %d: %s\n", pid, msg);
errlev = 2;
}
argc--;
argv++;
neg = zero = 0;
}
return(errlev);
}
usage()
{
fprintf(stderr, "usage: kill [ -signo ] pid ...\n");
exit(2);
}