ARG_MAX가 Limits.h를 통해 정의되지 않은 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/46714

  •  09-06-2019
  •  | 
  •  

문제

Fedora Core 7에서 저는 다음을 사용하는 코드를 작성하고 있습니다. ARG_MAX.하지만, 내가 #include <limits.h>, 상수는 아직 정의되지 않았습니다.내 조사에 따르면 다음과 같은 곳에 존재하는 것으로 나타났습니다. <sys/linux/limits.h>, 그러나 이는 Win32/Mac/Linux에서 이식 가능해야 하므로 직접 포함하는 것은 옵션이 아닙니다.여기서 무슨 일이 일어나고 있는 걸까요?

도움이 되었습니까?

해결책

limits.h에 없는 이유는 현재 아키텍처의 비트 폭을 기반으로 적분 유형의 값 범위에 대한 제한을 제공하는 양이 아니기 때문입니다.이는 ISO 표준에 따라 제한 사항.h에 할당된 역할입니다.

관심 있는 가치는 실제로 하드웨어에 국한되지 않으며 플랫폼마다, 시스템 빌드마다 다를 수 있습니다.

전화를 걸어보시는게 맞습니다 sysconf "ARG_MAX" 또는 "_POSIX_ARG_MAX"를 요청하세요.나 생각하다 어쨌든 그것은 POSIX 호환 솔루션입니다.

Acc.내 문서에는 요청하는 값에 따라 unistd.h 또는limits.h 중 하나 또는 둘 다를 포함합니다.

또 다른 점:exec 함수 계열의 많은 구현은 대규모 환경에서 호출하려고 하면 E2BIG 또는 유사한 값을 반환합니다.이는 exec가 실제로 반환할 수 있는 정의된 조건 중 하나입니다.

다른 팁

ARG_MAX는 /usr/include/linux/limits.h에 정의되어 있습니다.내 리눅스 커널 버전은 3.2.0-38입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top