nice.c - sbase - suckless unix tools
(HTM) git clone git://git.suckless.org/sbase
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
nice.c (898B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include <sys/resource.h>
3
4 #include <errno.h>
5 #include <stdlib.h>
6 #include <unistd.h>
7
8 #include "util.h"
9
10 #ifndef PRIO_MIN
11 #define PRIO_MIN -NZERO
12 #endif
13
14 #ifndef PRIO_MAX
15 #define PRIO_MAX (NZERO-1)
16 #endif
17
18 static void
19 usage(void)
20 {
21 eprintf("usage: %s [-n inc] cmd [arg ...]\n", argv0);
22 }
23
24 int
25 main(int argc, char *argv[])
26 {
27 int val = 10, r, savederrno;
28
29 ARGBEGIN {
30 case 'n':
31 val = estrtonum(EARGF(usage()), PRIO_MIN, PRIO_MAX);
32 break;
33 default:
34 usage();
35 break;
36 } ARGEND
37
38 if (!argc)
39 usage();
40
41 errno = 0;
42 r = getpriority(PRIO_PROCESS, 0);
43 if (errno)
44 weprintf("getpriority:");
45 else
46 val += r;
47 LIMIT(val, PRIO_MIN, PRIO_MAX);
48 if (setpriority(PRIO_PROCESS, 0, val) < 0)
49 weprintf("setpriority:");
50
51 execvp(argv[0], argv);
52 savederrno = errno;
53 weprintf("execvp %s:", argv[0]);
54
55 _exit(126 + (savederrno == ENOENT));
56 }