0

我被要求找到一个不进行任何系统调用的 shell 命令。我进行了很多搜索,最后在这里询问是否有任何命令在 linux shell 或 unix 中不会在后端调用系统调用。

谢谢。

4

2 回答 2

3

是和否

的部分...

有许多 shell 内置函数可以处理 shell 宏处理器编程语言的控制流或定义。

只有少数内置函数本质上需要进行任何系统调用;一般来说,它们只是改变 shell 内存映像中的状态。

没有部分... _

实际上,您甚至不能只在 shell 中键入Enter而不运行许多系统调用。shell 可能会等待(2)来查看是否有任何子进程终止,它可能会检查时间,它通常会打印一个提示符......当然它会读取下一个命令。

于 2013-01-22T17:15:37.050 回答
1

想想 shell 是什么,它是如何运行命令的。

shell 是一个解释器。粗略地说,有一个解释器循环

do {
   get_next_command();
   switch(next_command){
   cmd_alias: ...
   cmd_break: ...
     ...
   }
} while (true);

现在想想,哪个命令只是更新了shell进程的内部结构,哪个命令需要调用操作系统来执行它的功能。

于 2013-01-22T17:23:09.513 回答