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)하지만 당신이 하는 일로 볼 때 그들은 그렇게 하지 않을 것 같습니다.그들도 그렇게 할 것으로 예상됩니다.

답변2

pam_limits사용자 세션을 생성할 때 리소스 제한을 설정하는 PAM(Pluggable Authentication Module) 모듈을 살펴보세요 . 이 모듈을 사용하려면 PAM을 구성해야 합니다. 그런 다음 다음 /etc/security/limits.d/을 확인 해야 합니다.https://linux.die.net/man/8/pam_limits더 많은 정보를 알고 싶습니다.

관련 정보