execlp函数

execlp函数
头文件:
#include<unistd.h>
函数原型:
int execlp(const char* file,const char* arg,...);
返回值:
如果执行成功则函数不会返回,执行失败直接返回-1,失败原因存在errno中。
函数说明:
execlp()会从PATH环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,以后的参数当做该文件的argv[0],argv[1],...,最后一个参数必须用空指针(NULL)作结束。
execlp()函数比较重要,与system()函数比较相似。不同的是,execlp函数可以执行用户所指定的可执行文件。
execlp函数可以执行相对目录和绝对路径的文件。
eg:
execlp("ls","ls",NULL);
execlp("ls","",NULL);
execlp("ls","ls",(char*)0);
execlp("ls","",(char*)0);
这四种写法的效果是一样的。
原因是:
execlp(路径,命令,参数);
路径可以是绝对路径也可以是相对路径,execlp函数收到命令之后,首先会看这个路径是什么,如果是bash种的命令,函数会通过环境变量查找该命令。
如果是路径,则会分析是相对路径或者绝对路径,找到需要的文件,找到之后,看第二个参数,如果第二个参数为空的话,他会默认为执行查找到的文件,并执行。
eg:
execlp("/home/ding/lsd/demo1","./demo1",(char*)0);
execlp("./demo1","",NULL);
这两种方式执行的结果也是一样的,只是第一种为绝对路径,第二种为相对路径。
posted @ 2016-08-21 12:25  dmfsimle  阅读(1541)  评论(0编辑  收藏  举报