c语言设置进程优先级的函数,使用nice修改程序的优先级

【函 数 名】nice — 调整进程运行的优先级

【函数原型】int nice(int inc);

【相关头文件】unistd.h

【函数说明】

在Linux中,进程运行的优先级分为-20~19等40个级别,其中,数值越小运行优先级越高,数值越大运行优先级越低。显而易见,优先级

-20的运行优先级最高,优先级19的运行优先级最低。函数nice是将当前进程运行的优先级增加指定值,既用当前进程运行的优先级加上指定值得到新的优先级,然后用新的优先级运行该进程。当计算出来的值小于-20,则进程将以优先级-20运行;当计算出来的值大于19,则进程将以优先级19运行。若增加正值,则表示降低进程运行优先级;若增加负值,则表示升高进程运行优先级。但只有具有超级用户权限的用户才可以以负数作为函数的参数,否则该函数将返回错误。

【参数说明】

inc [IN] 指定优先级增加的值

【函数返回值】

若操作成功,函数将返回调整后的进程运行的优先级;

若操作失败,函数将返回-1。

注意:当函数返回-1时,不一定就是函数操作失败。因为若函数成功调整进程运行优先级后的优先级为-1,函数也返回-1,所以在判断函数是否操作失败时,除了判断函数返回的值是否为-1外,还需要查看

errno的值是否为相关错误码,详见“程序示例”。

【相关错误码】

EACCES 无操作权限,既非超级用户权限的用户用负值作为参数调用该函数。

【程序示例】

1. #include

2. #include

3. #include

4. #include

5. #include

6.

7. int main(int argc, char

*argv[])

8. {

9. int adjustment = 0;

10. int ret;

11. if ( argc > 1 ) {

12. adjustment = atoi( argv[1] );

13. }

14.ret = nice( adjustment );

15. printf( "nice(%d):%d/n", adjustment, ret );

16. if ( -1 == ret ) {

17. if ( errno == EACCES ) {

18. printf( "Cannot set priority:%s./n", strerror( errno )

);

19. exit(-1);

20. }

21. }

22. system("nice");

23. exit(0);

24. }

参考文献:

[1] Linux man pages

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Linux系统上安装vim编辑器和使用fork()创建父进程和两个子进程程序: 1. 安装vim编辑器: ``` sudo apt-get update sudo apt-get install vim ``` 2. 创建一个新的C语言源代码文件,例如process.c,并使用vim编辑器打开该文件: ``` vim process.c ``` 3. 在process.c文件中编写以下代码: ```c #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main() { pid_t pid1, pid2; pid1 = fork(); if (pid1 < 0) { fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid1 == 0) { printf("Child 1: b\n"); } else { pid2 = fork(); if (pid2 < 0) { fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid2 == 0) { printf("Child 2: c\n"); } else { printf("Parent: a\n"); } } return 0; } ``` 4. 保存并退出vim编辑器。在终端中输入以下命令编译process.c文件: ``` gcc process.c -o process ``` 5. 运行编译后的可执行文件。在终端中输入以下命令: ``` ./process ``` 这将运行名为process的可执行文件,并在屏幕上显示父进程和两个子进程的字符。 观察、记录并分析屏幕上进程调度和并发执行的情况,您会看到父进程和两个子进程的字符交替出现,因为它们在并发执行并由操作系统调度。 如果在程序使用系统调用nice()来改变各进程优先级,那么会出现不同的现象。nice()函数可以将进程优先级从-20(最高优先级)到+19(最低优先级)之间进行调整。在我们的例子中,如果我们将父进程优先级提高到最高级别,则父进程将更频繁地运行并显示字符“a”,而子进程将更少地运行并显示字符“b”和“c”。 请注意,在实际情况下,不应该在没有必要的情况下改变进程优先级,因为这可能会导致其他进程无法获得足够的CPU时间,从而影响系统的整体性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值