|
|
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.