execlp ()системный вызов

Использование bash:

text="hello world unix"
if [[ $text =~ ^([^[:space:]]+).*[[:space:]]([^[:space:]]) ]]; then
    declare -p BASH_REMATCH
    echo "${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
fi
declare -ar BASH_REMATCH='([0]="hello world u" [1]="hello" [2]="u")'
hellou
-2
05.05.2020, 07:18
2 ответа

Команда оболочки ulimitприменяется только к текущей оболочке и ее потомкам. Это встроенная -, а не отдельная команда.

Вы не можете запустить отдельный процесс оболочки, выполнить в нем ulimitи ожидать, что он окажет какое-либо влияние на родительский процесс.

Из C вы должны использовать функции getrlimit(2)и setrlimit(2), чтобы получить и установить лимиты ресурсов для текущего процесса и его потомков. Хотя, судя по вашему подходу, я думаю, они не будут делать то, что вы от них ожидаете.

3
28.04.2021, 23:16

Взгляните на pam_limits, модуль PAM (Pluggable Authentication Modules )для установки ограничений ресурсов при создании сеанса пользователя. Вам нужно будет настроить PAM для использования этого модуля, а затем вам нужно будет настроить ограничения в /etc/security/limits.d/. См.https://linux.die.net/man/8/pam_limitsдля получения дополнительной информации.

1
28.04.2021, 23:16

Теги

Похожие вопросы