ulimi
tとrlimit
という用語を同じ意味で使用しているようですが、同じものを指していると言えますか?
混乱は、ulimitがラップする基本的なシステムコールが setrlimit と呼ばれるという事実に起因すると思います。
Ulimit()関数は、プロセス制限を制御します。この関数で制御できるプロセス制限には、書き込み可能な単一ファイルの最大サイズが含まれます(これは、RLIMIT_FSIZEでsetrlimit()を使用するのと同じです)。
さらに、setrlimit
のマニュアルページを参照すると、制限情報を含む基本的なデータ構造はrlimit
と呼ばれます。
getrlimitおよびsetrlimitは、それぞれリソース制限を取得および設定します。各リソースには、rlimit構造(getrlimit()とsetrlimit()の両方に対するrlim引数)で定義されているように、ソフト制限とハード制限が関連付けられています。
struct rlimit { rlim_t rlim_cur; /* Soft limit */ rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */ };
limit man page を参照すると、システムのrlimitsを制御するbashシェルコマンドであり、printf、read、sourceなどの bash-builtins の一部です。
getrlimitsページ を参照すると、システム呼び出しを使用してシステムrlimitを制御するC/C++経由のAPIを表します。追加 glibcドキュメント onは、rlimits(=リソース制限)をよりよく説明します。
ulimit
は次の2つです。
getrlimit()
のために廃止されたPOSIX 7 C APIインターフェイス: http://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html
アプリケーションでは、廃止されたulimit()関数の代わりにgetrlimit()またはsetrlimit()関数を使用する必要があります。
これは、POSIX 6でsim
が応答した場合には当てはまりませんでした。
GNU/Linuxでは、getrlimit()
およびulimit()
は_sys_getrlimit
_システムコールで実装されます。 _sys_ulimit
_はありません。
非推奨ではないPOSIX 7 CLIユーティリティ: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ulimit.html
ulimit()
またはgetrlimit()
を使用して実装できます。