You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
991 B
49 lines
991 B
/* renice.c - renice process
|
|
*
|
|
* Copyright 2013 CE Strake <strake888 at gmail.com>
|
|
*
|
|
* See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/renice.html
|
|
|
|
USE_RENICE(NEWTOY(renice, "<1gpun#|", TOYFLAG_USR|TOYFLAG_BIN))
|
|
|
|
config RENICE
|
|
bool "renice"
|
|
default y
|
|
help
|
|
usage: renice [-gpu] -n INCREMENT ID...
|
|
*/
|
|
|
|
#define FOR_renice
|
|
#include "toys.h"
|
|
|
|
GLOBALS(
|
|
long n;
|
|
)
|
|
|
|
void renice_main(void) {
|
|
int which = (toys.optflags & FLAG_g) ? PRIO_PGRP :
|
|
((toys.optflags & FLAG_u) ? PRIO_USER : PRIO_PROCESS);
|
|
char **arg;
|
|
|
|
for (arg = toys.optargs; *arg; arg++) {
|
|
char *s = *arg;
|
|
int id = -1;
|
|
|
|
if (toys.optflags & FLAG_u) {
|
|
struct passwd *p = getpwnam(s);
|
|
if (p) id = p->pw_uid;
|
|
} else {
|
|
id = strtol(s, &s, 10);
|
|
if (*s) id = -1;
|
|
}
|
|
|
|
if (id < 0) {
|
|
error_msg("bad '%s'", *arg);
|
|
continue;
|
|
}
|
|
|
|
if (setpriority(which, id, getpriority(which, id)+TT.n) < 0)
|
|
perror_msg("setpriority %d", id);
|
|
}
|
|
}
|