는 : 유닉스 프로그램이 I/O의 모든 종류의 작업을 수행 할 때이해 유닉스 파일 기술자 Beej의 소켓 프로그래밍 책에서
, 그들은 파일 기술자에 쓰기 읽거나 그것을 할. 파일 설명자는 단순히 열린 파일과 연관된 정수 입니다.
프로그램이 "정수"를 읽고 쓰는 것을 말합니까? 그렇다면 어떻게 가능하며 어떤 의미입니까?
는 : 유닉스 프로그램이 I/O의 모든 종류의 작업을 수행 할 때이해 유닉스 파일 기술자 Beej의 소켓 프로그래밍 책에서
, 그들은 파일 기술자에 쓰기 읽거나 그것을 할. 파일 설명자는 단순히 열린 파일과 연관된 정수 입니다.
프로그램이 "정수"를 읽고 쓰는 것을 말합니까? 그렇다면 어떻게 가능하며 어떤 의미입니까?
파일 설명자가 정수로 구현되었다고합니다. 즉, 각각의 열린 파일에는 고유 한 참조 방법 인 파일 핸들이 주어지며 실제로는 고유 번호입니다.
은 당신이 할 경우 :
int fd = open("filename", flags);
fd
는 구현에 의해 반환되는 정수입니다. 프로그램 내에서 열었고 나에게 부여 된 파일에 고유하므로 나중에 같은 파일을 참조 할 수 있습니다. read
/write
/close
등입니다. 이는 일련의 연산을 연결하는 데 사용되는 토큰에 지나지 않습니다.
이것은 파일을 읽거나 쓰기 위해 시스템 호출을 수행해야한다는 것을 의미하며 파일 디스크립터 (정수)는 커널에게 어떤 파일에 대해 이야기하고 있는지를 나타내는 매개 변수입니다 . 그들이 정수라는 사실은 상대적으로 흥미롭지 않습니다. 파일을 열고, 디스크립터를 저장 한 다음, 디스크립터를 커널에 전달하여 그 파일에 대한 작업을 수행한다. 그 가치는 커널에서만 흥미 롭습니다. 특별한 파일 기술자 0, 1 및 2 (stdin, stdout 및 stderr)가 주목할만한 예외이지만 그 경우에도 일반적으로 리터럴 정수 값 대신 미리 정의 된 상수를 사용합니다.
나는 파일 기술자와 함께 strugled하고 beejs도 있습니다. 깨달음의 순간은 내가 어떻게 이해했을 때였 는가? c dup 기능이 작동한다.
PS :이 늦게 대답하지만 어쩌면 누군가
도움을 줄 수 내가 파일 설명이 자세히 정교한 integer.'로하시기 바랍니다 구현 '이해가 안 돼요. –
그건 내가 이미 알고있는 것이지만, 그 프로그램이 그 정수에 "쓰는"말은 인용문이다. 그 정수를 사용하여 작성해야하는 파일을 참조한다는 것을 의미합니까? –
@Anisha - 인용구에 "파일 설명자 읽기 또는 쓰기"가 있습니다. 파일 기술자는'open'에서 되돌아 오는 것입니다. 'read (fd, ...)'를 호출하면 특정 파일 기술자로부터 읽기를 요청하게됩니다. 마찬가지로'write (fd, ...)'는 특정 파일 디스크립터에 쓰기 요청이다. – Flexo