#include #include #include #include #include #include int main(int argc, char **argv) { int oldp = getpriority(PRIO_PROCESS, 0); int adj = 10; int opt; while ((opt = getopt(argc, argv, "n:")) != -1) { switch (opt) { case 'n': adj = atoi(optarg); break; default: printf("nice [n] [cmd] [arg1] [arg2]\n\t-n N Add N to the niceness\n"); return 0; } } argv += optind; argc -= optind; if (argc == 0) { printf("%d\n", oldp); return 0; } if (setpriority(PRIO_PROCESS, 0, oldp + adj) < 0) { fprintf(stderr, "nice: %s\n", strerror(errno)); return 1; } execvp(argv[0], argv); fprintf(stderr, "nice: %s: %s\n", argv[0], strerror(errno)); return 1; }