Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxでは、C言語のCPU使用率は

Linuxでは、C言語のCPU使用率は

  
です。

#include< stdio.h> #include< stdlib.h> #include< unistd.h> //ヘッダーファイルstruct occupy //占有を宣言する構造体{char name [20]; //char型の配列名を定義するname nameは20個の要素を持つunsigned int user; //unsigned int型のユーザーを定義するunsigned int nice; ////unsigned intを定義するまれなunsigned int型のシステム; //unsigned int型システムの定義unsigned int idle; //unsigned int型のアイドルの定義}; float g_cpu_used; //グローバルfloat型の定義g_cpu_used int cpu_num; //グローバルint型を定義するcup_num void cal_occupy(構造体占有*、構造体占有*); //型なし関数を宣言するcal_occupyには2つの構造体パラメータが含まれるvoid get_occupy(構造体*); //型なし関数を宣言するGet_occupyには構造体パラメータint main()が含まれます//main関数start {struct dominy ocpu [10]; ////占有構造体を定義する変数名はocpuと10個の要素を持ちますstruct occupy ncpu [10]; ////占有構造体を定義します可変10個の要素を持つncpuですint i; //ローカルint変数を定義しますi cpu_num = sysconf(_SC_NPROCESSORS_ONLN); //システムコールは(;;)//dead loop {sleep(1)に対してcpu_numに割り当てられたcpuの数を返します。 1秒間待つget_occupy(ocpu); //初めて構造体配列を戻すget関数を呼び出すsleep(1); //1秒間待つget_occupy(ncpu); //構造体配列を戻すget関数を呼び出す(i = 0; i <cpu_num; i ++)//ループcpu_num − 1回の求積{cal_occupy(& ocpu [i]、& ncpu [i]); //構造体配列printfを戻すためにcal関数を呼び出す。 ("%f \\ n"、g_cpu_used); //印刷g_cpu_usedの使用法は小数点以下6桁で表示されます}}} void cal_occupy(構造体占有* o、構造体占有* n)//型なしcal関数の場合は2つです。形式構造型OおよびNのポインタ変数{double od、nd; //倍精度実数変数od、nd double id、sdを定義します; //倍精度実数id、sd倍スケールを定義します; //倍精度実可変スケールod =(double)(o-> user + o-> nice + o-> system + o-> idle); //初めて(user + priority + system +)アイドル時間はod nd =(doublに割り当てられます。 e)(n - > user + n - > nice + n - > system + n - > idle); //2番目の時間(user + priority + system + idle)がodスケールに割り当てられます。 = 100.0 /(float)(nd-od); //キャスト(nd-od)の違いがfloat型であることを除いて//100で、スケール変数id =(double)に割り当てられます(n-> user - o-> User); //ユーザーの1回目と2回目の差がidに割り当てられますsd =(double)(n-> system - o-> system); //system firstとsecond time次に、時間差をsd g_cpu_used =((sd + id)* 100.0)/(nd-od); //((user + system)⊿100)に割り当てます。 void get_occupy(struct occupy * o)//型なしget関数へのポインタに仮パラメータ構造体クラスが含まれるO {FILE * fd; //ファイルポインタを定義するfd int n; //ローカル変数nを定義するInt type char buff [1024]; //ローカル変数buff配列をchar型サイズ1024に定義しますfd = fopen(" /proc /stat"、" r>)//statファイルをR読み込みモードで開きます次に、ポインタfd fgets(buff、sizeof(buff)、fd); //fdファイルから長さbuffの文字列を読み込み、それを開始位置に保存します。 (n = 0; n

Copyright © Windowsの知識 All Rights Reserved