2010-03-11 2 views
4

일반적인 OS에서 표준 C 디스크 IO를 사용하여 한 번에 몇 개의 파일을 열 수 있습니까?한 번에 몇 개의 파일을 열 수 있습니까?

필자가 말해야 할 몇 가지 상수를 읽으려고했지만, Windows XP 32 비트에서는 약 20 가지 정도였습니다. 30 이상으로 잘 작동하는 것처럼 보였지만 광범위하게 테스트하지는 않았습니다.

최대 400 개의 파일을 한꺼번에 열어야하므로 최신 OS가이를 지원한다면 정말 좋을 것입니다. XP를 지원할 필요는 없지만 Linux, Win7 및 최신 버전의 Windows 서버를 지원해야합니다.

대안은 가능하면 피해야 할 내 미니 파일 시스템을 작성하는 것입니다.

답변

2

Linux에서는 사용 가능한 파일 설명자의 양에 따라 다릅니다. ulimit -n을 사용하여 쉘 당 사용 가능한 FD 수를 설정하거나 표시 할 수 있습니다.

Linux에서 사용 가능한 전체 FD : s 값을 확인 (또는 변경)하는 방법은 instructions을 참조하십시오.

This IBM support article

는 Windows의 번호가 512 인 것을 제안하고,

open()으로 돌아 int과 FD (기사의 지침에 따라) 레지스트리에서 변경할 수 있습니다 - 또한 상단 INT 한계의 크기를 한도. (INT_MAX는 많은 수와는 무관합니다)

3

프로세스는 getrlimit 시스템 호출을 사용하여 제한을 쿼리 할 수 ​​있습니다.

#include<sys/resource.h> 
struct rlimit rlim; 
getrlimit(RLIMIT_NOFILE, &rlim); 
printf("Max number of open files: %d\n", rlim.rlim_cur-1); 
1

참고로, 루트로, 당신은는 /etc/security/limits.conf 에서 'NOFILE'항목을 수정 먼저해야합니다. 예를 들어 다음

*    hard nofile   10240 
*    soft nofile   10240 

사용자가 bash는 -n 명령 ulimit를 사용할 수 있습니다 (사용자가 로그인 할 때의 limits.conf의 변화는 일반적으로 적용). (난 당신이 더 높은 이동이에 값을 에코있을 것 같아요 : 나는 페도라 11

ulimit -n <max_number_of_files> 

마지막에 최대 10,240 파일이 테스트 한 모든이는 다음과 같다 커널 한계에 의해 제한된다. .. 또한

cat /proc/sys/fs/file-max 

) 책임을 참조 http://www.karakas-online.de/forum/viewtopic.php?t=9834