Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!husc6!uwvax!rutgers!lll-crg!styx!ames!ucbcad!ucbvax!CITHEX.CALTECH.EDU!carl From: carl@CITHEX.CALTECH.EDU Newsgroups: mod.computers.vax Subject: Shorter alternate to STOP/FORCE Message-ID: <861130170724.00k@CitHex.Caltech.Edu> Date: Sun, 30-Nov-86 20:07:24 EST Article-I.D.: CitHex.861130170724.00k Posted: Sun Nov 30 20:07:24 1986 Date-Received: Mon, 1-Dec-86 03:43:38 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 38 Approved: info-vax@sri-kl.arpa I don't know what you did to make your version of a program to force exits of other processes take thirty-odd blocks (unless you're counting the include files that DEC supplies in your count), but here's a C program that does basically the same thing (it doesn't use the CLI routines that yours does, but DOES let you specify processes by name) that only takes two blocks (actually, 766 characters): /*------FORCEX.C--------------FILE_STARTS_HERE-------------------------------*/ #include#include #define OK(value) (((stat = (value)) & 7) == 1) main(nargs, args) int nargs; char **args; { static char buffer[80] = { '0', 'x', '\0' }; char temp[80]; static $DESCRIPTOR(prcnam, buffer); static long stat, pid; extern long SYS$FORCEX(); long *pidadr = &pid; struct dsc$descriptor *ptr = &prcnam; if (nargs == 1) strcat(buffer, "0"); else if (nargs == 2) { strcat(buffer, *++args); if (sscanf(buffer, "%x%s", &pid, temp) == 1) ptr = 0; else { prcnam.dsc$a_pointer = buffer + 2; prcnam.dsc$w_length = strlen(prcnam.dsc$a_pointer); pidadr = 0; } } else { puts("USAGE: FORCEX pid\n\tor\n FORCEX prcnam"); exit(1); } exit(SYS$FORCEX(pidadr, ptr, 1)); } /*------FORCEX.C--------------FILE_ENDS_HERE---------------------------------*/