2012-09-20 3 views
2

나는 리눅스의 현재 디렉토리를 보여주는 명령어를 작성하려고한다. 나는 "pwd"명령을 사용할 수 있다는 것을 알고 있지만, 이것이 나 자신을 구현할 필요가있다! ... 다른 말로하면, "findme"명령을 입력 할 때, 내가 가지고있는 디렉토리를 다시 돌려주고 싶다. 순간. 나는 "findme"명령 (매우 간단하다.)을 만들었지 만, 전체 디렉터리를 보여주기 위해 명령을 실행 한 후 어디에서 알 수 있을까?Linux에서 디렉토리를 수동으로 찾는 방법은 무엇입니까?

+0

어떤 프로그래밍 언어를 사용 하시겠습니까? – lilalinux

+0

C 및 XV6 환경에 대한 내 명령을 구현해야합니다 –

+0

clickety click ... xv6. 아, 이거 _ 숙제입니까? (http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions)? –

답변

2

다소 이상한 요구 사항 인 'implement pwd'(숙제가 아닌가요?). 컨텍스트를 좀 더 줄 수 있습니까? 정보의

아마 관련 비트는 다음과 같습니다

  • 디렉토리 ..가 상위 디렉토리에 연결하고, 현재에 .한다; 그래서 ...
  • 디렉토리를 ..으로 변경하면 파일 시스템에서 한 레벨 위로 올라갑니다 (맨 위에 있지 않은 한). 당신이 디렉토리 foo을 고려, 그래서 만약 플러스
  • 모든 디렉토리가 다음,에 '아이 노드 번호를'해야합니다 둘 다와 디렉토리foo/. 같은 아이 노드 번호가됩니다.

나는 pwd이 실제로 어떻게되는지 모르지만이 정보로 다시 구현할 수있는 돈을두고 있습니다.

+0

실제로 가능하지만 새로운 시스템 호출 만 노출하는 것이 더 쉽습니다. –

+0

경로명을 질의하기위한 시스템 호출이 실패 할 때 FreeBSD의'getcwd()'가 작동하는 방법입니다. 경로명이 너무 길거나 디렉토리 이름 중 하나가 이름 캐시에서 빠져 있거나 디버깅 목적으로 비활성화 된 경우 시스템 호출이 실패 할 수 있습니다. – jilles

+0

실제로 숙제 일 뿐이지 만 막 다른 골목에 다다랐을 때 숙제에 도움이되는 범죄가 있습니까? 다음과 같이 표시됩니다 : 특정 디렉토리에없는 경우 "/"문자 만 표시되고, 임시 디렉토리를 만들면 "/ temp"가 표시되어야합니다. 내가 뭘해야한다고 생각 "cd"명령을 사용하고 "pwd"명령을 호출 할 때 새 배열이 인쇄되도록 해당 배열의 각 buf 요소를 = 4 새 배열에 복사하는 것입니다. 맞습니까? –

0

XV6은 GNU/Linux와 전혀 다릅니다. pwd가 UNIX V6에서 구현되지 않았으므로 좋은 연습입니다. getcwd()를 시스템 콜 (syscall)로 구현하고 싶을 것입니다.

관련 문제