2011-09-13 2 views

답변

1

파일 설명자가 정수로 구현되었다고합니다. 즉, 각각의 열린 파일에는 고유 한 참조 방법 인 파일 핸들이 주어지며 실제로는 고유 번호입니다.

은 당신이 할 경우 :

int fd = open("filename", flags); 

fd는 구현에 의해 반환되는 정수입니다. 프로그램 내에서 열었고 나에게 부여 된 파일에 고유하므로 나중에 같은 파일을 참조 할 수 있습니다. read/write/close 등입니다. 이는 일련의 연산을 연결하는 데 사용되는 토큰에 지나지 않습니다.

+0

도움을 줄 수 내가 파일 설명이 자세히 정교한 integer.'로하시기 바랍니다 구현 '이해가 안 돼요. –

+0

그건 내가 이미 알고있는 것이지만, 그 프로그램이 그 정수에 "쓰는"말은 인용문이다. 그 정수를 사용하여 작성해야하는 파일을 참조한다는 것을 의미합니까? –

+0

@Anisha - 인용구에 "파일 설명자 읽기 또는 쓰기"가 있습니다. 파일 기술자는'open'에서 되돌아 오는 것입니다. 'read (fd, ...)'를 호출하면 특정 파일 기술자로부터 읽기를 요청하게됩니다. 마찬가지로'write (fd, ...)'는 특정 파일 디스크립터에 쓰기 요청이다. – Flexo

2

이것은 파일을 읽거나 쓰기 위해 시스템 호출을 수행해야한다는 것을 의미하며 파일 디스크립터 (정수)는 커널에게 어떤 파일에 대해 이야기하고 있는지를 나타내는 매개 변수입니다 . 그들이 정수라는 사실은 상대적으로 흥미롭지 않습니다. 파일을 열고, 디스크립터를 저장 한 다음, 디스크립터를 커널에 전달하여 그 파일에 대한 작업을 수행한다. 그 가치는 커널에서만 흥미 롭습니다. 특별한 파일 기술자 0, 1 및 2 (stdin, stdout 및 stderr)가 주목할만한 예외이지만 그 경우에도 일반적으로 리터럴 정수 값 대신 미리 정의 된 상수를 사용합니다.

+0

위대한, beej의 정의가 모호하다는 것을 의미합니까? 그들은 프로그램이 정수를 "쓰게"한다고 말했다. –

+1

@Anisha : 키는 "관련"단어에 있습니다. 정수 *는 파일이 아닌 * 파일을 나타냅니다. 설명은 다소 오도 된 내용이지만 IMO는 많지 않습니다. – tdammers

+0

당신이 읽고있는 것은 무엇이든, 저자와 함께 생각해보십시오. 종종 문맥에 들어갈 때 상황이 분명해집니다. – tdammers

2

나는 파일 기술자와 함께 strugled하고 beejs도 있습니다. 깨달음의 순간은 내가 어떻게 이해했을 때였 는가? c dup 기능이 작동한다.

PS :이 늦게 대답하지만 어쩌면 누군가

관련 문제