execlp() システムコール

execlp() システムコール

Cプログラムを介してulimitシェルコマンドを呼び出したいです。今私にいます:

execlp("ulimit", "ulimit", "-u", "%d", ulimit_a);

ulimit -aうまくコンパイルされますが、後で確認すると(ダッシュバージョンとbashバージョン)、ユーザーIDの最大プロセス値は実際には編集されません。同じことsystem()が発生しましたが、既知の問題のようです。system()

ベストアンサー1

シェルulimitコマンドは、現在のシェルとその子孫にのみ適用されます。別のコマンドではなく、組み込みコマンドです。

ulimit別のシェルプロセスを起動して実行し、親プロセスに影響を与えるとは期待できません。

Cでは、現在のプロセスとそのサブプロセスのリソース制限を取得して設定するには、およびgetrlimit(2)関数を使用する必要があります。setrlimit(2)しかし、あなたがやっていることを見ると、彼らはそうはしません。あなた彼らもそうすることが期待されています。

おすすめ記事