⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renice.c

📁 Android 一些工具
💻 C
字号:
/* * Copyright (c) 2008, The Android Open Source Project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. *  * Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the  *    distribution. *  * Neither the name of Google, Inc. nor the names of its contributors *    may be used to endorse or promote products derived from this *    software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/time.h>#include <sys/resource.h>#include <sched.h>static voidusage(const char *s){    fprintf(stderr, "USAGE: %s [[-r] priority pids ...] [-g pid]\n", s);    exit(EXIT_FAILURE);}void print_prio(pid_t pid){    int sched;    struct sched_param sp;    printf("pid %d's priority: %d\n", pid, getpriority(PRIO_PROCESS, pid));    printf("scheduling class: ");    sched = sched_getscheduler(pid);    switch (sched) {    case SCHED_FIFO:        printf("FIFO\n");        break;    case SCHED_RR:        printf("RR\n");        break;    case SCHED_OTHER:        printf("Normal\n");        break;    case -1:        perror("sched_getscheduler");        break;    default:        printf("Unknown\n");    }    sched_getparam(pid, &sp);    printf("RT prio: %d (of %d to %d)\n", sp.sched_priority,           sched_get_priority_min(sched), sched_get_priority_max(sched));}int renice_main(int argc, char *argv[]){    int prio;    int realtime = 0;    char *cmd = argv[0];    // consume command name    argc--;    argv++;    if (argc < 1)        usage(cmd);    if(strcmp("-r", argv[0]) == 0) {        // do realtime priority adjustment        realtime = 1;        argc--;        argv++;    }	if(strcmp("-g", argv[0]) == 0) {        if (argc < 2)            usage(cmd);        print_prio(atoi(argv[1]));        return 0;    }    if (argc < 1)        usage(cmd);    prio = atoi(argv[0]);    argc--;    argv++;    if (argc < 1)        usage(cmd);    while(argc) {        pid_t pid;        pid = atoi(argv[0]);        argc--;        argv++;        if (realtime) {            struct sched_param sp = { .sched_priority = prio };            int ret;            ret = sched_setscheduler(pid, SCHED_RR, &sp);            if (ret) {                perror("sched_set_scheduler");                exit(EXIT_FAILURE);            }        } else {            int ret;            ret = setpriority(PRIO_PROCESS, pid, prio);            if (ret) {                perror("setpriority");                exit(EXIT_FAILURE);            }        }    }       return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -