'ls'命令如何在Linux/Unix中运行?

ian*_*its 13 unix linux open-source operating-system solaris

我想确切地知道"Is"命令在Linux和Unix中是如何工作的.

据我所知,ls forks和exec到linux/unix shell然后得到输出(当前文件树.例如/home/ankit/).我需要一个更详细的解释,因为我不确定调用fork后会发生什么.

任何人都可以详细解释'ls'命令的功能吗?

Mar*_*ker 39

ls不叉.shell分叉和执行以运行任何未内置的命令,并且它可以运行的命令之一是ls.

ls使用opendir()和readdir()来遍历目录中的所有文件.如果它需要关于其中一个的更多信息,则调用stat().

  • monoxide:没有fork()的exec()将替换当前正在运行的进程,这意味着第一次运行命令时shell将消失. (2认同)

Sus*_*ant 10

为了补充答案,在C编程语言书(K&RC)中,他们给出了一个关于如何实现ls的小例子.他们已经很好地解释了所使用的数据结构和功能.