Linux 시스템에 대해 OPEN_MAX는 어디에 정의되어 있습니까?

아시 슈 :

OPEN_MAX 단일 프로그램에 허용되는 최대 열린 파일 수를 정의하는 상수입니다.

Beginning Linux Programming 4th Edition, Page 101 에 따르면 :

limits.h의 상수 OPEN_MAX에 의해 정의 된 한계는 시스템마다 다릅니다.

내 시스템 limits.h에서 디렉토리 의 파일 /usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed에는이 상수가 없습니다. 내가 잘못보고 limits.h있거나 OPEN_MAX2008 년 이후 위치가 변경 되었습니까?

키이스 톰슨 :

그만한 가치가 있기 위해 Beginning Linux Programming 의 제 4 판은 2007 년에 출판되었습니다. 그것의 일부는 약간 오래된 것일 수 있습니다. (내가 읽지 않은 책에 대한 비판은 아닙니다.)

OPEN_MAX적어도 Linux 시스템에서는 더 이상 사용되지 않는 것으로 보입니다 . 그 이유는 동시에 열 수있는 최대 파일 수가 고정되어 있지 않기 때문에 정수 리터럴로 확장되는 매크로는 해당 정보를 얻는 좋은 방법이 아닙니다.

FOPEN_MAX비슷한 또 다른 매크로 가 있습니다. 이유 OPEN_MAX와를 FOPEN_MAX정의한 경우 서로 다른 값을 가져야 하는 이유는 생각할 수 없습니다 . 그러나 FOPEN_MAXC 언어 표준에 의해 요구되므로 시스템은 그것을 정의하지 않을 수 없습니다. C 표준은FOPEN_MAX

구현에서 동시에 열 수있는 최소 파일 수인 정수 상수 표현식으로 확장

( "최소"라는 단어가 혼동되는 경우 프로그램이 최소한 한 번에 많은 파일을 열 수 있음을 보증합니다 .)

열 수있는 현재 최대 파일 수 를 원하면 sysconf()함수를 살펴보십시오 . 내 시스템에서 sysconf(_SC_OPEN_MAX)1024를 반환합니다. ( sysconf()man 페이지는 기호를 나타냅니다 OPEN_MAX. 이것은 카운트가 아니라에 의해 인식되는 값이며 sysconf()내 시스템에 정의되어 있지 않습니다.)

우분투 시스템에서 OPEN_MAX(단어 일치, 제외 FOPEN_MAX)를 검색 하고 다음을 발견했습니다 (이것은 단지 짧은 발췌 부분입니다).

/usr/include/X11/Xos.h:

# ifdef __GNU__
#  define PATH_MAX 4096
#  define MAXPATHLEN 4096
#  define OPEN_MAX 256 /* We define a reasonable limit.  */
# endif

/usr/include/i386-linux-gnu/bits/local_lim.h:

/* The kernel header pollutes the namespace with the NR_OPEN symbol
   and defines LINK_MAX although filesystems have different maxima.  A
   similar thing is true for OPEN_MAX: the limit can be changed at
   runtime and therefore the macro must not be defined.  Remove this
   after including the header if necessary.  */  
#ifndef NR_OPEN
# define __undef_NR_OPEN
#endif
#ifndef LINK_MAX
# define __undef_LINK_MAX
#endif
#ifndef OPEN_MAX
# define __undef_OPEN_MAX
#endif
#ifndef ARG_MAX
# define __undef_ARG_MAX
#endif

/usr/include/i386-linux-gnu/bits/xopen_lim.h:

/* We do not provide fixed values for 

   ARG_MAX      Maximum length of argument to the `exec' function
                including environment data.

   ATEXIT_MAX   Maximum number of functions that may be registered
                with `atexit'.

   CHILD_MAX    Maximum number of simultaneous processes per real
                user ID. 

   OPEN_MAX     Maximum number of files that one process can have open
                at anyone time.

   PAGESIZE
   PAGE_SIZE    Size of bytes of a page.

   PASS_MAX     Maximum number of significant bytes in a password.

   We only provide a fixed limit for

   IOV_MAX      Maximum number of `iovec' structures that one process has
                available for use with `readv' or writev'.

   if this is indeed fixed by the underlying system.
*/

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

x86_64 Linux에서 ioctl 시스템 호출 용 사용자 공간 랩퍼는 어디에 정의되어 있습니까?

ARM 시스템 호출을위한 인터페이스는 무엇이며 Linux 커널에서 어디에 정의되어 있습니까?

Linux에서 PATH_MAX는 어디에 정의되어 있습니까?

Enum.values ()는 어디에 정의되어 있습니까?

plan9에 대해 Stat_t는 어디에 정의되어 있습니까?

Request 클래스는 어디에 정의되어 있습니까?

PYTHONPATH는 처음에 어디에 정의되어 있습니까?

$ (System.DefaultWorkingDirectory)는 TFS2015의 빌드에 대해 어디에 설정되어 있습니까?

BILLING_RESULT_OK는 어디에 정의되어 있습니까?

Ada-Verbosity_Desired는 어디에 정의되어 있습니까?

Linux 커널 시스템 호출 서비스 루틴의 소스 코드는 어디에 있습니까?

printf는 어디에 정의되어 있습니까?

contains (Junction)는 어디에 정의되어 있습니까?

POSIX에서 $ _는 어디에 정의되어 있습니까?

_data []는 magento의 어디에 정의되어 있습니까?

오류 코드는 어디에 정의되어 있습니까?

'err_quit'는 어디에 정의되어 있습니까?

이 json 멤버는 어디에 정의되어 있습니까?

`Malformed 및`Uchar는 어디에 정의되어 있습니까?

ldap 그룹과 Linux 그룹 간의 관계는 어디에 정의되어 있습니까?

@ drawable / new_logo는 어디에 정의되어 있습니까?

Nix 시스템에 대해 3 개의 레이어가있는 경우 웹 서버는 어디에 있습니까?

Nix 시스템에 대해 3 개의 레이어가있는 경우 웹 서버는 어디에 있습니까?

이 서비스가 Linux Ubunty 16.04 시스템에 정확히 어디에 정의되어 있습니까?

Linux에서 stddef.h는 어디에 정의되어 있습니까?

CONFIG_HZ는 어디에 정의되어 있습니까?

시스템의 특정 파일에 대한 정보는 어디에서 찾을 수 있습니까?

${datestamp}는 어디에 정의되어 있습니까?

특정 Linux 시스템 라이브러리의 소스 코드는 어디에서 찾을 수 있습니까?

TOP 리스트

  1. 1

    셀레늄의 모델 대화 상자에서 텍스트를 추출하는 방법은 무엇입니까?

  2. 2

    Blazor 0.9.0 및 ASP.NET Core 3 미리보기 4를 사용한 JWT 인증

  3. 3

    openCV python을 사용하여 텍스트 문서에서 워터 마크를 제거하는 방법은 무엇입니까?

  4. 4

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  5. 5

    Excel : 합계가 N보다 크거나 같은 상위 값 찾기

  6. 6

    오류 : MSB4803 : MSBuild의 .NET Core 버전에서 "ResolveComReference"작업이 지원되지 않습니다.

  7. 7

    R에서 Excel로 내보낼 때 CET / CEST 시간 이동이 삭제됨

  8. 8

    node.js + postgres : "$ 1"또는 그 근처에서 구문 오류

  9. 9

    확대 후 하이 차트에서 Y 축이 잘못 정렬 됨

  10. 10

    EPPlus에서 행 높이를 설정할 때 이상한 동작

  11. 11

    Ionic 2 로더가 적시에 표시되지 않음

  12. 12

    MS Access 부분 일치 2 테이블

  13. 13

    EPPlus에서 병합 된 셀의 행 높이 자동 맞춤

  14. 14

    ExecuteNonQuery- 연결 속성이 초기화되지 않았습니다.

  15. 15

    ResponseEntity를 사용하고 InputStream이 닫히는 지 확인하는 적절한 스트리밍 방법

  16. 16

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  17. 17

    오류 : "const wchar_t *"유형의 인수가 "WCHAR *"유형의 매개 변수와 호환되지 않습니다.

  18. 18

    Java에서 이미지를 2 색으로 변환

  19. 19

    overflow-y를 사용할 때 스크롤 버벅 거림 줄이기 : scroll;

  20. 20

    Java에서 Apache POI를 사용하여 테이블 크기 및 간격을 단어로 설정하는 방법

  21. 21

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

뜨겁다태그

보관