3

タイトルが示唆するように、 setrlimit RLIMIT_CPUで 2 秒未満の精度にする方法があるかどうかを知る必要がありますか?

struct rlimit cpulimit;
cpulimit.rlim_cur = 5; // 5 seconds SIGXCPU
cpulimit.rlim_max = 5; // 5 seconds SIGKILL

(典型的なシステムでは、プログラムは一度に最大10ミリ秒かかる場合があることを知っています)ミリ秒の精度である必要さえありません。100msで十分です。

だから私はそれが次のようなものであることに興味があります:

struct rlimit cpulimit;
cpulimit.rlim_cur = 3500; // 3.5 seconds SIGXCPU
cpulimit.rlim_max = 4500; // 4.5 seconds SIGKILL

これが必要な理由と使用方法を説明することの関連性がわかりません。必要に応じて、質問と情報を編集します。

前もって感謝します、

4

2 に答える 2

1

悪意のある可能性のあるプログラムに制限を適用する必要がありますか、それとも協力するプログラムだけに適用する必要がありますか? 後者の場合、cputime クロックが致命的なシグナルを送信するようにタイマーを設定するだけで機能します。

これを行うにはtimer_create、 のクロック IDと、受信したいシグナルを反映CLOCK_PROCESS_CPUTIME_IDする構造体を使用して呼び出し、タイムアウトを設定します。シグナルがデフォルトで致命的である場合、そのハンドラーをインストールする必要さえありません。これは、実行時間を制限したいプロセス内で行われます。sigeventtimer_settime

于 2014-07-21T06:54:03.880 に答える