试题详情
简答题简述一条shell命令在Linux系统中的实现过程。
  • 一条shell命令在Linux系统中的执行过程基本上按照如下步骤:
    ①读取用户由键盘输入的命令行。
    ②分析命令,以命令名作为文件名,其他参数改造为系统调用execve()内部处理所要求的形式。
    ③终端进程调用fork()建立一个子进程。
    ④终端进程本身用系统调用wait4()来等待子进程完成(如果是后台命令,则不等待)。当子进程运行时调用execve(),子进程根据文件名(即命令名)到目录中查找有关文件(这是命令解释程序构成的文件),调入内存,执行这个程序(即执行这条命令)。
    ⑤如果命令末尾有&号(后台命令符号),则终端进程不用执行系统调用wait4(),而是立即发提示符,让用户输入下一个命令,转步骤(1)。如果命令末尾没有&号,则终端进程要一直等待,当子进程(即运行命令的进程)完成工作后要终止,向父进程(终端进程)报告,此时终端进程醒来,在做必要的判别等工作后,终端进程发提示符,让用户输入新的命令,重复上述处理过程。
  • 关注下方微信公众号,在线模考后查看

热门试题