exec( )函数族 :
以下我们来看看一个进程怎样来启动还有一个程序的运行。在Linux中要使用exec函数族。系统调用execve()对当前进程进行替换,替换者为一个指定的程序,其參数包含文件名称(filename)、參数列表(argv)以及环境变量(envp)。exec函数族当然不止一个。但它们大致同样,在Linux中,它们各自是:execl,execlp。execle,execv,execve和execvp,以下我仅仅以execlp为例,其他函数到底与execlp有何差别,请通过manexec命令来了解它们的详细情况。
一个进程一旦调用exec类函数,它本身就"死亡"了。系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号。也就是说,对系统而言,还是同一个进程,只是已经是还有一个程序了。
以下我们来看看一个进程怎样来启动还有一个程序的运行。在Linux中要使用exec函数族。系统调用execve()对当前进程进行替换,替换者为一个指定的程序,其參数包含文件名称(filename)、參数列表(argv)以及环境变量(envp)。exec函数族当然不止一个。但它们大致同样,在Linux中,它们各自是:execl,execlp。execle,execv,execve和execvp,以下我仅仅以execlp为例,其他函数到底与execlp有何差别,请通过manexec命令来了解它们的详细情况。
一个进程一旦调用exec类函数,它本身就"死亡"了。系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号。也就是说,对系统而言,还是同一个进程,只是已经是还有一个程序了。
(只是exec类函数中有的还同意继承环境变量之类的信息。
)