|
|
1.1 ! root 1: /* ! 2: * Example of DOSKILLPROCESS usage. ! 3: * ! 4: * With DOSKILLPROCESS, any process can kill any other. While this is a ! 5: * powerful and versatile ability, problems can be created if a process ! 6: * kills, say, the session manager or a copy of CMD. ! 7: * ! 8: * Another danger to watch out for is that not all resources are freed ! 9: * when a process is killed. If the process owned any RAM semaphores ! 10: * when it was killed, the semaphores will not be automatically freed. ! 11: * This sometimes makes it dangerous to kill a process without knowing ! 12: * what state the intended victim is in. DOSKILLPROCESS is best thought ! 13: * of, then, as a last ditch effort to get rid of an unwieldy process. ! 14: * ! 15: * DOSKILLPROCESS does not actually kill the process but instead sends ! 16: * it a termination signal. It is possible for processes to protect ! 17: * themselves against such signals, and once the target is in EXITLIST ! 18: * processing, further calls to DOSKILLPROCESS have no effect ! 19: * whatsoever. ! 20: * ! 21: * Invoke as "kill pid", where pid is the process id to receive the ! 22: * kill signal. This program works protected mode only. ! 23: * ! 24: * To observe the operation of this program, use the "sleep" example ! 25: * and detach it in the background. Then use kill to kill the sleep ! 26: * program. The detach command tells you the pid of the background ! 27: * process. ! 28: * ! 29: * Compile as: cl -AL -Lp -G2 kill.c ! 30: * ! 31: * Copyright (C) Microsoft Corp. 1986 ! 32: */ ! 33: ! 34: #include <stdio.h> ! 35: #include <doscalls.h> ! 36: ! 37: main(argc, argv) ! 38: int argc; ! 39: char *argv[]; ! 40: { ! 41: unsigned pid; ! 42: unsigned kill_opt = 1; ! 43: ! 44: /* get the process to kill from the command line */ ! 45: if(argc == 2) { ! 46: pid = atoi(argv[1]); ! 47: ! 48: /* kill the process, but not its child processes */ ! 49: if(DOSKILLPROCESS(kill_opt, pid) != 0) ! 50: printf("Unable to kill process %u\n", pid); ! 51: } ! 52: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.