exec系列函数执行脚本文件

声明:本人正在研读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这样的情况,实际可能是由于命令行参数太长,或可能是会经常改动,因此,将其写成一个脚本。这样,根据需要,只需要改变脚本中的内容,便可以改变传递给新进程的命令行参数了,可以避免对程序源代码的改动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值