exec系列函数执行脚本文件

来源:互联网 发布:不用网络的监控摄像头 编辑:程序博客网 时间:2024/05/22 07:08

声明:本人正在研读UNIX环境高级编程,相关博文为学习心得,观点可能会有错误,若那位大神发现错误,请留言指正,不胜感激。

    当使用fork创建一个新进程容器后,接着使用exec系列函数来加载程序到进程容器时,根据要加载到进程容器中的程序文件的类型不同,结果会不同。下面,分别来介绍:

1.当加载的是一个可执行应用程序时,直接将可执行应用程序的代码段,数据段,bss段,加载到进程容器中。然后,执行。

2.如果加载的是一个interpreter file(脚本文件)时,exec会先读取此脚本文件,获取脚本解释器。脚本解释器一般在脚本的第一行中被    指出。如#! /bin/sh foo。指明,脚本解释器为/bin/sh这一shell程序。此时,exec将/bin/sh的代码段,数据段,bss段,加载到进程容器    中,foo作为命令行参数,填写到进程容器的命令行参数区域。

3.对于第二种情况,脚本解释器也可以是自定义的程序,并非要求一定使用shell程序。如下列,#! /home/sar/bin/echoarg foo。此处,      指定一个用户自定义的程序,来被加载到进程容器中,foo同2,为命令行参数。

总结:

    对于第2,3这样的情况,实际可能是由于命令行参数太长,或可能是会经常改动,因此,将其写成一个脚本。这样,根据需要,只需要改变脚本中的内容,便可以改变传递给新进程的命令行参数了,可以避免对程序源代码的改动。

0 0
原创粉丝点击