/* setidle.c: tell kernel to use SCHED_IDLE policy for an existing process and its future descendents. These background processes run only when some cpu would otherwise be idle. The process's priority is never dynamically escalated to the point where its I/O actions may compete with that of higher priority work */ #include <sched.h> #include <errno.h> #include <stdio.h> #define SCHED_IDLE 6006 int main(int argc, char *argv[]) { int pid; struct sched_param param = { 0 }; if (argc != 2) { printf("usage: %s pid\n", argv[0]); return EINVAL; } pid = atoi(argv[1]); if (sched_setscheduler(pid, SCHED_IDLE, ¶m) == -1) { perror("error sched_setscheduler"); return -1; } return 0; }