문제

내가 좋아하는 방법을 정확하게 알고있다""명령에서 작동 Linux and Unix.

내가 알기로는,ls forks&exec Linux/Unix shell 그리고 출력(현재 파일의 나무입니다.예를 들어,./홈/ankit/).필요한 자세한 설명으로 나에 대해 무엇이 일어나를 호출한 후에는 포크.

누군가를 설명해 주십시오 기능을의'ls'command 니다.

도움이 되었습니까?

해결책

LS는 포크가 아닙니다. 쉘 포크와 execs는 내장되지 않은 명령을 실행하기 위해, 실행할 수있는 명령 중 하나는 ls입니다.

ls는 opendir () 및 readDir ()를 사용하여 디렉토리의 모든 파일을 단계별로 진행합니다. 그 중 하나에 대한 자세한 정보가 필요하면 stat ()을 호출합니다.

다른 팁

답변에 추가하기 위해 C 프로그래밍 언어 북 (K & RC)에서 LS 구현 방법에 대한 작은 예를 제시했습니다. 그들은 데이터를 잘 사용하는 데이터 구조와 기능을 설명했습니다.

LS가하는 일을 이해하려면 Opensolaris 출처에서 멍청이를 취할 수 있습니다. https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls/ls.c.

그것이 압도적이라면, Solaris에서 당신은 트러스를 사용하여 LS가하는 일을 이해하기 위해 시스템 통화를 보는 것으로 시작합니다. 트러스 사용, 시도 :

트러스 -afl -o ls.out /bin /ls

그런 다음 ls.out의 출력을보십시오

나는 트레이스가 리눅스의 트러스와 동일하다고 생각합니다.

당신이 정말로 이해하려는 상세한 내장의 ls,소스 코드입니다.따를 수 있습니다 tpgould 의 링크 Solaris 원본 또는 그것을 쉽게 찾을 수 있 소스에서 온라인 또는 Linux,BSD 배포합니다.

나는 특히 추천 4.4BSD 소스입니다.

내 기억으로,ls 시작을 분석하여 그는 많은 옵션을,그 다음 시작하는 파일 또는 디렉토리에서 명령줄을(기본값은".").하위 디렉토리에 의해 처리됩 재귀 디렉토리 목록니다.없 fork()또는 exec()를 사용합니다.

이것은 오래된 스레드이지만, 여전히 언급하고 있습니다. 왜냐하면 나는 반대되고 받아 들여진 대답이 부분적으로 부정확하다고 생각하기 때문입니다. @mark는 LS가 쉘에 내장되어 쉘이 실행 및 포크를하지 않는다고 말합니다. Bash에서 TLDP 문서를 연구했을 때 (링크를 첨부했습니다) "ls"빌드의 명령으로 나열되지 않습니다.

http://tldp.org/ldp/bash-beginners-guide/html/sect_01_03.html

BASH 내장 명령 :

별칭, 바인딩, 내장, 명령, 선언, 에코, 활성화, 도움, 도움, Let, Local, Logout, Printf, Shopt, Type, Typeset, Ulimit 및 Unalias.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top