关于execlp

http://bbs.chinaunix.net/thread-548357-1-1.html

我碰到的第一个例子就是execlp("ls","ls","-a",(char *)0)
我不是没有看手册,手册中是这样写的:
int execlp(const char *path, const char *arg,...);
我当时觉得ls就是对应的char *path, 那么第二个ls就是参数了这样就不对了。
我就到版上请教,有人告诉我ls类似于argv[0],我明白他的意思就是函数名嘛!
我觉得什么事情都有它的道理,既然前面有了ls,其实就是告诉系统要执行ls 命令,那后面有蹦出个argv[0]有什么意思。(我就多问了两句,就被封掉了)。
我后来试过execlp("ls","-a",(char *0))竟然执行也通过了,我就感到更加的迷惑了。如果第二个参数是命令的名称,那么-a怎么能执行。而且执行结果和execlp("ls","ls","-a",(char *)0)不同,我观察的结果是execlp("ls","-a",(char *0))很可能执行的是ls而不是 ls -a。
后面我就做了一系列测试,证明了我的猜测时正确的。
我尝试
execlp("ls",''","-a",(char *0))和execlp("ls","sfsdfsdf","-a",(char *0))
结果等价于ls -a,
因此我在这里大胆猜测,execlp函数在实际执行的时候根本没有用到第二个参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值