shell英文翻译为外壳,壳的意思;而在linux操作系统中,我们将它作为操作系统的外壳来理解。对shell工作原理的感性认识,shell在运行指令时,看似运行指令,实际是创建了shell的子进程来代替父进程shell来运行指令,此时子进程运行指令并不是shell的指令,而是一个全新的指令。这里就运用了linux进程控制主题下的进程程序替换。
子进程程序替换的步骤 :1.创建子进程;2.将硬盘上的新程序加载到物理内存中去;3.让子进程通过页表映射到物理内存中新代码的位置,从此子进程在代码和数据上与父进程没有任何关系(除血缘关系)。
linux采用exec进程程序替换家族函数来进行程序的替换,共有六个函数
函数的返回值:
这些函数如果调.用成功则加载新的程序从启动代码开始执行,不再返回,如果调用出错则返回-1, 所以exec函数只有出错的返回值.而没有成功的返回值。