예를 들어 K&R 2 (8.6 예 - 디렉토리 나열)을보고있었습니다. Linux 명령 ls
또는 Windows 'dir
의 다운 된 버전입니다. 이 예는 opendir
, readdir
과 같은 함수 구현을 보여줍니다. 나는 한 번에 하나씩 코드를 입력하려고했지만 여전히 작동하지 않는다. 그것이하는 것은 점 (현재 디렉토리에 대한)을 인쇄하고 종료한다는 것입니다.디렉토리에서`read` 시스템 호출 사용
readdir
구현에서 코드에서 발견 한 흥미로운 점은 시스템 호출을 open
및 read
과 같은 디렉터리에서 호출한다는 것입니다. 같은 뭔가 -이 코드를 실행하면 폴더 이름 "dirname"
가 일부 파일이 경우에도
int fd, n;
char buf[1000], *bufp;
bufp = buf;
fd = open("dirname", O_RDONLY, 0);
n = read(fd, bufp, 1000);
write(fd, bufp, n);
나는 더 출력을 얻을 수 없습니다.
또한,이 책은 구현이 버전 7 및 시스템 V UNIX 시스템위한 것이라고 말했다. 이것이 리눅스에서 작동하지 않는 이유입니까?
다음은 코드 http://ideone.com/tw8ouX입니다.
그래서 리눅스는 read
디렉토리에서 시스템 호출을 허용하지 않습니까? 아니면 뭔가 다른 원인입니까?
그래서'readdir'은 리눅스에서 시스템 호출입니까? – ShuklaSannidhya
솔직히'readdir()'자체가 시스템 호출이거나 다른 것을 호출하는지 모르겠습니다. 테스트 프로그램을 작성하고,'strace'로 실행하고, 발견하고 말해주십시오. 나도 궁금해. –