977
|
1 /* renice.c - renice process
|
|
2 *
|
|
3 * Copyright 2013 CE Strake <strake888 at gmail.com>
|
|
4 *
|
|
5 * See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/
|
|
6 * See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html
|
|
7
|
|
8 USE_RENICE(NEWTOY(renice, "gpun#", TOYFLAG_BIN))
|
|
9
|
|
10 config RENICE
|
|
11 bool "renice"
|
|
12 default n
|
|
13 help
|
|
14 usage: renice [-gpu] -n increment ID ...
|
|
15 */
|
|
16
|
|
17 #define FOR_renice
|
|
18 #include "toys.h"
|
|
19
|
|
20 GLOBALS(
|
|
21 long nArgu;
|
|
22 )
|
|
23
|
|
24 void renice_main (void) {
|
|
25 int ii;
|
|
26 int which = toys.optflags & FLAG_g ? PRIO_PGRP :
|
|
27 toys.optflags & FLAG_u ? PRIO_USER :
|
|
28 PRIO_PROCESS;
|
|
29
|
|
30 if (!(toys.optflags & FLAG_n)) error_exit ("no increment given");
|
|
31
|
|
32 for (ii = 0; ii < toys.optc; ii++) {
|
|
33 id_t id;
|
|
34
|
|
35 if (isdigit (toys.optargs[ii][0])) id = strtoul (toys.optargs[ii], 0, 10);
|
|
36 else if (toys.optflags & FLAG_u) id = getpwnam (toys.optargs[ii]) -> pw_uid;
|
|
37 else {
|
|
38 error_msg ("not a number: %s", toys.optargs[ii]);
|
|
39 toys.exitval = 1;
|
|
40 continue;
|
|
41 }
|
|
42
|
|
43 if (setpriority (which, id, getpriority (which, id) + TT.nArgu) < 0) {
|
|
44 error_msg ("failed to setpriority of %d", id);
|
|
45 toys.exitval = 1;
|
|
46 }
|
|
47 }
|
|
48 }
|