本帖最后由 蓝蓝的天 于 2016-7-29 11:36 编辑
有七种不同的E x e c函数可供使用。它们通常被统称为E X e c函数,我们可以使用
这七个函数中的任一个。这些E x e c函数使得UNIX系统进程控制源语更加完善。用
fork可以创建新进程,用E x e c可以初始执行新的程序。
#include
int E x e c le(const char *pathname,const char *arg0,...
/* (char
* ) 0 , char * const envp * / )
int E x e c lp(const char *filename, const char *arg0, ...
/* ( char * ) 0 * / );
前一个函数取路径名作为参数,后一个函数则取文件名作为参数。
下图所示程序演示了E x e c 函数。
编译:
在该程序中先调用E x e c le,它要求一个路径名和一个特定的环境。下一个调用的E x e c lp,
它用一个文件名,并将调用者的环境传送给新程序。
上面的程序要执行两次的echoall程序如下图所示,这是一个很普通的程序,它回显所有
命令行参数及全部环境表。
编译:
运行:
注意:shell提示符出现在第二个E x e c 打印argv之前。这是因为父进程并不等待该子进程
结束。
本帖最后由 蓝蓝的天 于 2016-7-29 11:36 编辑
有七种不同的E x e c函数可供使用。它们通常被统称为E X e c函数,我们可以使用
这七个函数中的任一个。这些E x e c函数使得UNIX系统进程控制源语更加完善。用
fork可以创建新进程,用E x e c可以初始执行新的程序。
#include
int E x e c le(const char *pathname,const char *arg0,...
/* (char
* ) 0 , char * const envp * / )
int E x e c lp(const char *filename, const char *arg0, ...
/* ( char * ) 0 * / );
前一个函数取路径名作为参数,后一个函数则取文件名作为参数。
下图所示程序演示了E x e c 函数。
编译:
在该程序中先调用E x e c le,它要求一个路径名和一个特定的环境。下一个调用的E x e c lp,
它用一个文件名,并将调用者的环境传送给新程序。
上面的程序要执行两次的echoall程序如下图所示,这是一个很普通的程序,它回显所有
命令行参数及全部环境表。
编译:
运行:
注意:shell提示符出现在第二个E x e c 打印argv之前。这是因为父进程并不等待该子进程
结束。