2013-04-07 2 views
1

코드는 다음과 같이이다 :리눅스 열려있는 0을 반환

int fd = open(filename, O_RDONLY); 

"최대 열려있는 파일은"이 프로세스는 수백 개의 파일을 열 수 1024입니다. 처음에는 잘 작동합니다. 잠시 후, open은 0을 반환합니다. 이유는 모르겠습니다. 도움!!! 감사합니다.

추신 : open 0을 반환, 당신이 방금 연 파일을 사용하려는 경우 FD 0을 사용해야 함을 말하고 때 int fd = open(filename, O_RDONLY) == -1;

+0

될 수 있습니다 변화? 내 말은, 언제든지 1024 개 이상의 열린 파일을 가지고 있지 않다는 것입니다. –

+1

열려있는 파일이 너무 많으면 -1을 반환하고 errno는 EMFILE로 설정되어야합니다. – user2253605

+1

네, 그리고 뭔가 다른 의미 .. 아, 여기에 거의 6am있어. 잠을 자 : D 여기 좀 봐 (그리고 그 질문에 대답을 허용), 문제는 매우 유사합니다 : http://stackoverflow.com/ 질문/2135159/socket-returns-0-c-client-server-app –

답변

4

아니다.

표준을 닫았습니까? , 동작을

+0

0은 stdin을 의미하지만 3보다 큰 num을 반환해야합니까? 그렇지 않니? – user2253605

+1

@ user2253605 : 할당 된 모든 fd를 반환합니다. stdin을 닫으면 0은 완전히 공정한 게임입니다. – tmyklebu

0

관리자는 관리자가 "2000 -n ulimit를"을 설정할 수 있습니다 ulimit를 몇 가지 매개 변수를 변경할 수 있습니다 당신은 당신의 코드를 변경하여 열려있는 파일의 수를 제한하려고하면 프로세스 당 열린 파일의 수는 2000

+0

열려있는 파일이 너무 많으면 -1을 반환하고 errno는 EMFILE로 설정해야합니다. 0을 반환합니다. 이유는 무엇입니까? – user2253605

관련 문제