C 프로그램을 통해 ulimit 쉘 명령을 호출하고 싶습니다. 지금 나 한테있어:
execlp("ulimit", "ulimit", "-u", "%d", ulimit_a);
ulimit -a
잘 컴파일되지만 나중에 확인할 때(대시 및 bash 버전) 사용자 ID 최대 프로세스 값이 실제로 편집되지 않습니다. 같은 일이 system()
발생했지만 알려진 문제인 것 같습니다.system()
답변1
셸 ulimit
명령은 현재 셸과 그 하위 항목에만 적용됩니다. 별도의 명령이 아닌 내장된 명령입니다.
ulimit
별도의 셸 프로세스를 시작하여 실행하고 상위 프로세스에 영향을 미칠 것으로 기대할 수는 없습니다 .
C에서는 현재 프로세스와 그 하위 프로세스에 대한 리소스 제한을 가져오고 설정하려면 getrlimit(2)
및 함수를 사용해야 합니다 . setrlimit(2)
하지만 당신이 하는 일로 볼 때 그들은 그렇게 하지 않을 것 같습니다.너그들도 그렇게 할 것으로 예상됩니다.
답변2
pam_limits
사용자 세션을 생성할 때 리소스 제한을 설정하는 PAM(Pluggable Authentication Module) 모듈을 살펴보세요 . 이 모듈을 사용하려면 PAM을 구성해야 합니다. 그런 다음 다음 /etc/security/limits.d/
을 확인 해야 합니다.https://linux.die.net/man/8/pam_limits더 많은 정보를 알고 싶습니다.