Linuxシステムでsetitimer機能を使用すると、定期的に機能を実行するために使用される高精度のタイミング機能を使用できます。次の小シリーズでは、setitimer機能の使用方法について詳しく説明します。
説明:次のタイミングは、より多くのタイマーによってカバーされる前に、プロセスsetitimerが一つだけを持つことができるだけで、独自のを達成するためのプロセスと考えることができます。
setitimer()は、同じプロセス内で複数のタイマーをサポートするための複数の同時使用をサポートしていません。
Linux関連のタイマー(setitimer)は次のように説明されています。
Linuxシステムには各プロセスに3つのタイマーがあり、それぞれが独自の異なるドメインでカウントされます。いずれかのタイマーが最後までカウントすると、システムはプロセスにシグナルを送信し、カウンターがリセットされます。
次の3つのカウンタ形式がサポートされています。
ITIMER_REALカウンタはリアルタイムで1ずつ減少し、カウントが比較された後にSIGALRMシグナルが送信されます。
ITIMER_VIRTUALプロセスが実行中にカウントすると、カウントが完了したときにSIGVTALRMシグナルがプロセスに送信されます。
ITIMER_PROFは、プロセスが実行され、システムがプロセスに代わって実行されているときにカウントされます。
[getitimer /setitimerシステムコール]
説明:
インターバルタイマーの値を取得または設定します。システムはプロセスに3種類のタイマーを提供し、各クラスは異なる時間領域でその値を減らします。タイマーが期限切れになると、シグナルがプロセスに送信され、その後タイマーが再起動します。
使い方:
#include "sys /time.h"
int getitimer(int which、struct itimerval * value);
int setitimer( Int which、const struct itimerval * value、struct itimerval * ovalue);
パラメータ:
which:間欠的なタイマータイプ、3つのオプションがあります。
ITIMER_REAL //値は0、タイマーの値はリアルタイムでデクリメントされ、送信されるシグナルはSIGALRMです。
ITIMER_VIRTUAL //値は1です。プロセスの実行時にタイマーの値は減少し、送信されるシグナルはSIGVTALRMです。
ITIMER_PROF //値は2です。タイマーおよびプロセスの実行中にタイマーの値は減少し、送信されるシグナルはSIGPROFです。
value、ovalue:timeパラメータ、プロトタイプは以下のとおりです。
struct itimerval
{
struct timeval it_interval;
struct timeval it_value;
}
struct timeval
{ long tv_usec; }; < Br> getitimer()はvalueが指す構造体に現在のタイマーの値を入れます。 setitimer()は、valueが指す構造体をタイマーの現在の値に設定しますovalueがNULLでない場合は、タイマーの元の値を返します。 戻り値説明: 正常に実行されると0を返します。失敗した場合は-1が返され、errnoは次のいずれかの値に設定されます。EFAULT:valueまたはovalueは無効なポインタです。EINVAL:その値はITIMER_REAL、ITIMER_VIRTUAL、またはITIMER_PROFのいずれでもありません。 > #include "stdio.h" #include "unistd.h" #include "signal.h" #include "string.h" #include "sys /time.h" #include "errno.h" void PrintMsg(int Num) { printf('%s /n'、' Hello World'); return; } int main(int argc、char * argv) []) { signal(SIGALRM、PrintMsg); struct itimerval tick; tick.it_value.tv_sec = 10; //10タイマーは1秒後に開始されます tick.it_value.tv_usec = 0; tick.it_interval.tv_sec = 1; //タイマーが開始されると、1秒ごとに対応するテキストが実行されます関数 tick.it_interval.tv_usec = 0; //setitimerはSIGALRMシグナルをトリガーします int ret = setitimer(ITIMER_REAL、& tick、NULL); if(ret!= 0) { printf('タイマーエラーを設定します。%s /n>; strerror(errno)); return -1; } printf(' Wait!/n'); getchar(); return 0; } 上記はLinuxでのsetitimer関数の使用方法です。 setitimer機能には3種類のタイマー選択がありますが、より正確なタイミングを達成するためには、setitimer機能を選択することをお勧めします。
LighttpdはオープンソースのWebサーバーソフトウェアで、多くの友人がインストール中に多くの問題に遭遇しましたが、次の小さなシリーズでは、CentOSでのLig
うるう秒はうるう秒の意味と解釈されます。Linuxシステムでは毎月末にエラー時間を調整する必要があるため、問題が発生し、それによってLinuxプログラムの応答が遅くなります。それで、あなたはこの時間にどのように対処しますか?
ログイン
A、2番目の質問テスト
を飛躍
1、次のコマンド戻り飛躍= 01である場合、それは飛躍があることを意味する第二
ntpqの
を発生
Egrep&lsquo; INS
コンピュータのオペレーティングシステムには通常、独自のスクリーンショットのショートカットがあり、多くのソフトウェア業界にはスクリーンショットがあります。その後、Linuxオペレーティングシステムのスク
最近、Linuxユーザーの中にはシステムプロンプトの検索にMKDIRを使用したものがあります:ディレクトリ `test&lsquo;を作成できません:読み取り専用ファイルシステム(プロンプトはこのディ