date and time created 83/07/24 12:43:31 by slatteng
[unix-history] / usr / src / usr.bin / renice / renice.c
CommitLineData
47aa95b6 1#ifndef lint
f683a5de 2static char *sccsid = "@(#)renice.c 4.5 (Berkeley) 83/07/24";
47aa95b6
SL
3#endif
4
ce4fd43b
SL
5#include <sys/time.h>
6#include <sys/resource.h>
47aa95b6
SL
7#include <stdio.h>
8#include <pwd.h>
9
10/*
11 * Change the priority (nice) of processes
12 * or groups of processes which are already
13 * running.
14 */
15main(argc, argv)
16 char **argv;
17{
18 int which = PRIO_PROCESS;
fe3b5491 19 int who = 0, prio, errs = 0;
47aa95b6
SL
20
21 argc--, argv++;
a9ad9e31
SL
22 if (argc < 2) {
23 fprintf(stderr, "usage: renice priority who ...\n");
6824099d 24 exit(1);
47aa95b6
SL
25 }
26 prio = atoi(*argv);
27 argc--, argv++;
28 if (prio > PRIO_MAX)
29 prio = PRIO_MAX;
30 if (prio < PRIO_MIN)
31 prio = PRIO_MIN;
47aa95b6 32 for (; argc > 0; argc--, argv++) {
6824099d
SL
33 if (strcmp(*argv, "-g") == 0) {
34 which = PRIO_PGRP;
35 continue;
36 }
37 if (strcmp(*argv, "-u") == 0) {
38 which = PRIO_USER;
39 continue;
40 }
41 if (strcmp(*argv, "-p") == 0) {
42 which = PRIO_PROCESS;
43 continue;
44 }
47aa95b6
SL
45 if (which == PRIO_USER) {
46 register struct passwd *pwd = getpwnam(*argv);
47
48 if (pwd == NULL) {
49 fprintf(stderr, "renice: %s: unknown user\n",
50 *argv);
51 continue;
52 }
fe3b5491 53 who = pwd->pw_uid;
47aa95b6 54 } else {
fe3b5491
SL
55 who = atoi(*argv);
56 if (who < 0) {
47aa95b6
SL
57 fprintf(stderr, "renice: %s: bad value\n",
58 *argv);
59 continue;
60 }
61 }
fe3b5491 62 errs += donice(which, who, prio);
47aa95b6
SL
63 }
64 exit(errs != 0);
65}
66
fe3b5491
SL
67donice(which, who, prio)
68 int which, who, prio;
69{
6824099d 70 int oldprio;
fe3b5491
SL
71 extern int errno;
72
6824099d 73 errno = 0, oldprio = getpriority(which, who);
fe3b5491
SL
74 if (oldprio == -1 && errno) {
75 fprintf(stderr, "renice: %d: ", who);
76 perror("getpriority");
77 return (1);
78 }
79 if (setpriority(which, who, prio) < 0) {
80 fprintf(stderr, "renice: %d: ", who);
81 perror("setpriority");
82 return (1);
83 }
84 printf("%d: old priority %d, new priority %d\n", who, oldprio, prio);
85 return (0);
86}