Unix/Linux编程实践读书笔记3

第8章  进程和程序:编写命令解释器sh 

1.shell是如何运行程序的

  shell打印提示符,输入命令,shell运行这个命令,然后shell再次打印提示符,如此循环反复。

  • 用户键入程序名a.out
  • shell 建立一个新的进程运行这个程序
  • shell从磁盘载入程序
  • 程序在它的进程中运行直到结束

  实现shell需要用到的知识:运行一个程序,建立一个进程,等待exit()

一个程序如何运行另外一个程序:程序调用execvp(progname, arglist)

它的运作流程:

  • 程序调用execvp;
  • 内核从磁盘将程序载入;
  • 内核将arglist复制到进程;
  • 内核调用main(argc, argv)。

如何建立一个新的进程:程序调用fork

父进程如何等待子进程的退出:调用wait等待子进程结束

  wait()做两件事:暂停调用它的进程直到子进程结束,取得子进程结束时传递给exit()的值。

  键入Ctrl-C键,子进程终止,shell也终止了,因为键盘信号SIGINT发给了所有连接的进程!注意SIGINT信号的影响。

改进:一行多个命令(ls ; date;ps ),后台进程,退出命令。

第9章 可编程的shell、shell变量和环境:编写自己的shell

 

posted on 2018-03-18 21:32  flysong  阅读(73)  评论(0编辑  收藏  举报

导航