2016-11-23 11 views
1

を使用して-dは、ulimitはまだ無制限であることを示しているが、私は答えは1024実行ulimitのは、私は次の2行との交流のコードを実行しようとするとシステム()関数

system("ulimit -d 1024"); system("ulimit -d");

+1

これは、 'system(..)'が新しいサブシェルを作成し、 'ulimit'がそのサブシェルだけに影響を及ぼすからです。これは 'system(...) 'からの復帰時にシェルが破壊されたときに失われます。何をしようとしていても、次のいずれかを行う必要があります:1)シェルスクリプトをラップする2)現在のプロセス*に対してこの機能を提供するAPIをハントする*。 – SuperSaiyan

+0

これらの制限は、 'etc/security/limits.conf'を変更することで、システムごとに設定できます。これがあなたの質問からあなたを助けるかどうかは分かりません。 – David

答えて

2

の場合になりたいですプロセスを呼び出すためのulimitを設定したい場合は、setrlimit(2)をarguemnt RLIMIT_DATAに設定してください。

system() ulimitコマンドは、呼び出しプロセスではなく子プロセスにのみ影響します。

関連する問題