web-dev-qa-db-ja.com

Linuxのulimitとulimitは同じですか?

ulimitとrlimitという用語を同じ意味で使用しているようですが、同じものを指していると言えますか?

17
Ryan

混乱は、ulimitがラップする基本的なシステムコールが setrlimit と呼ばれるという事実に起因すると思います。

ulimit manページからの抜粋

Ulimit()関数は、プロセス制限を制御します。この関数で制御できるプロセス制限には、書き込み可能な単一ファイルの最大サイズが含まれます(これは、RLIMIT_FSIZEでsetrlimit()を使用するのと同じです)。

さらに、setrlimitのマニュアルページを参照すると、制限情報を含む基本的なデータ構造はrlimitと呼ばれます。

setrlimit manページからの抜粋

getrlimitおよびsetrlimitは、それぞれリソース制限を取得および設定します。各リソースには、rlimit構造(getrlimit()とsetrlimit()の両方に対するrlim引数)で定義されているように、ソフト制限とハード制限が関連付けられています。

struct rlimit {
    rlim_t rlim_cur;   /* Soft limit */
    rlim_t rlim_max;   /* Hard limit (ceiling 
                          for rlim_cur) */
};

参考文献

12
slm

limit man page を参照すると、システムのrlimitsを制御するbashシェルコマンドであり、printf、read、sourceなどの bash-builtins の一部です。

getrlimitsページ を参照すると、システム呼び出しを使用してシステムrlimitを制御するC/C++経由のAPIを表します。追加 glibcドキュメント onは、rlimits(=リソース制限)をよりよく説明します。

2
BHS

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()を使用して実装できます。