通過系統呼叫nice改變程序優先順序

2021-07-15 14:56:17 字數 1416 閱讀 6066

nice函式宣告:#include

int nice(int increment);

nice系統呼叫包含getpriority和setpriority這兩個函式

函式宣告:#include

int getpriority(int which, int who);

int setpriority(int which, int who, int prio);

nice系統呼叫是它們的一種組合形式:

int nice(int increment)

#include#include#include#include#include#include#includeint main(int argc,char *argv)

wait(&stat_val);

exit(0);

}

**執行結果:

[dela@server1 dela_c]$ ./a.out

父程序正在執行, 當前程序的pid:18847, 子程序的pid:18848

子程序正在執行,當前pid:0, 父程序pid:18847

old priority = 0

new priority = -1

在上述**中,newpri = nice(6); 輸出的newpri是6, 而newpri = nice(-6); 則輸出的newpri是-1, 這說明在執行這條語句時nice有可能出錯了

不能用errno檢測-1, 因為 int prio 的取值時-20到20, 所以返回-1有可能是出錯,也有可能是設定的優先順序

又因為只要newpri = nice(負值); 輸出的newpri都是-1,由此可判斷是這條語句nice時出錯

prio代表的是程序的執行優先權, 數值越低就代表有較高的優先次序, 執行會比較頻繁,

此優先權預設是0, 而只有超級使用者允許降低此值,這樣就可以解釋為什麼newpri = nice(負值); 會一直出錯了

root使用者執行此段**結果如下:

[dela@server1 dela_c]$ sudo ./a.out 

[sudo] password for dela:

父程序正在執行, 當前程序的pid:19592, 子程序的pid:19593

子程序正在執行,當前pid:0, 父程序pid:19592

old priority = 0

new priority = -6

setpriority(int which, int who, int prio);

第三個引數prio的取值介於-20至20之間, 代表程序的執行優先權, 數值越低, 代表具有越高的優先權, 執行會更頻繁, 此優先權預設是0, 而只有超級使用者root才允許降低此值

Linux改變程序優先順序的Nice命令

本文所述nice與renice命令已由管理員在debian與centos中測試通過 vps普遍效能不高,很多人可能有這樣乙個感受,在執行du tar等命令時,會造成系統負載飆公升,apache響應緩慢。這時nice命令改變程序優先順序可能能緩解這種狀況。nice命令用於調整linux系統中程序的優先...

Linux改變程序優先順序的nice命令

前言 vps普遍效能不高,很多人可能有這樣乙個感受,在執行du tar等命令時,會造成系統負載飆公升,apache響應緩慢。這時nice命令改變程序優先順序可能能緩解這種狀況。nice命令用於調整linux系統中程序的優先順序。通俗地講,linux系統中,程序有 19到19這39個優先順序。19最優...

Linux改變程序優先順序的Nice命令

本文所述nice與renice命令已由管理員在debian與centos中測試通過 vps普遍效能不高,很多人可能有這樣乙個感受,在執行du tar等命令時,會造成系統負載飆公升,apache響應緩慢。這時nice命令改變程序優先順序可能能緩解這種狀況。nice命令用於調整linux系統中程序的優先...