2016-11-23 1 views
1

Wenn ich versuche ac Code mit den folgenden zwei Zeilen auszuführen, zeigt ulimit noch unbegrenzt sein, aber ich mag die Antwort 1024.Lauf ulimit -d-System() Funktion

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

+1

Das liegt daran, dass 'system (..)' eine neue Subshell erzeugt und 'ulimit' nur diese Subshell betrifft. Es ist verloren, wenn die Shell zerstört wird, wenn sie aus dem System (...) zurückkehrt. Was auch immer Sie versuchen, Sie sollten entweder: 1) in ein Shell-Skript einbinden 2) Nach APIs suchen, die Ihnen diese Funktionalität * für den aktuellen Prozess * zur Verfügung stellen. – SuperSaiyan

+0

Sie können diese Grenzwerte pro System festlegen, indem Sie 'etc/security/limits.conf' ändern ... es ist nicht klar, ob Ihnen das bei Ihrer Frage helfen würde. – David

Antwort

2

Wenn sein Wenn Sie das ulimit für den Aufrufprozess festlegen möchten, verwenden Sie setrlimit(2) mit argumentn RLIMIT_DATA.

system() wird fork und der Befehl ulimit betrifft nur den untergeordneten Prozess, nicht den aufrufenden Prozess.