ps -o nice,comm
【函 數 名】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 <stdio.h> /* printf */
2. #include <stdlib.h> /* atoi, system, exit */
3. #include <errno.h> /* errno */
4. #include <string.h> /* strerror */
5. #include <unistd.h> /* nice */
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