免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 11151 | 回复: 39
打印 上一主题 下一主题

关于execlp我还是想说两句 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-20 15:28 |只看该作者 |倒序浏览
我知道斑竹的脾气不好,但是我还是想说两句,可能还是会被锁定,无所谓了。
我只是想告诉某些人,并不是菜鸟就真的像你们想像的那样什么都不作,就知道问别人。而且,有些问题并不像你们想像的那样没有意义,没经过思考。如果这个帖子再被锁,我认了,我以后不来就是了!
我是刚开始学习unix 编程,我想大家肯定经常会碰到execlp函数
我碰到的第一个例子就是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函数在实际执行的时候根本没有用到第二个参数。
写了这么多,一方面是想给自己一个说法,另一方面更是想给象我一样的菜鸟一点信心——不用因为自己很菜就自卑,在人格上,大家都是平等的。我相信自己,我一定不会比那个随便封掉别人帖子的人差。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-05-20 15:31 |只看该作者

关于execlp我还是想说两句

你which ls 一下..看看ls的路径.
/bin/ls
其实 第一个参数应该是/bin/ls

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-05-20 15:33 |只看该作者

关于execlp我还是想说两句

之所有你第一个参数是ls还好用 是因为环境变量的作用.

你echo $PATH  肯定有/bin这个路径

论坛徽章:
0
4 [报告]
发表于 2005-05-20 15:33 |只看该作者

关于execlp我还是想说两句

我觉得你说得很好,像你学习。

论坛徽章:
0
5 [报告]
发表于 2005-05-20 15:34 |只看该作者

关于execlp我还是想说两句

我写错了 execlp的第一个参数是:const char *file
你说的那个写路径的应该是函数:execv

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-05-20 15:35 |只看该作者

关于execlp我还是想说两句

无论那个 都需要全局的环境变量的..~~

论坛徽章:
0
7 [报告]
发表于 2005-05-20 15:38 |只看该作者

关于execlp我还是想说两句

我还是觉得如果楼主回答了argv[0]是什么这个问题,就什么都解决了。

论坛徽章:
0
8 [报告]
发表于 2005-05-20 15:39 |只看该作者

关于execlp我还是想说两句

我在linux c 函数参考里面看到的是这样写的:
execlp()会从PATH环境变量所指的目录中查找符合参数file的文件名,找到以后便执行该文件,然后将第二个以后的参数当作该文件的argv[0],argv[1].....
所以我觉得是不需要的,只要写了文件名就行

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2005-05-20 15:41 |只看该作者

关于execlp我还是想说两句

如果事情真如楼主所说,
我倒觉得我们做了一个善事:在不断的删贴后,你终于自己独立地掌握了 execlp 的用法。尽管可能还有错误的认识,不过不要紧,这是你自己获取到的知识。等到将来有一天你再次栽倒在 execlp 下,那么等你再爬起来的时候,你就已经彻底地掌握了这个函数。还有和它相关的一系列函数。

之所以强调你自己的知识和别人传授的不同,是因为别人的知识到处都可以找到(BBS、书籍、etc),而自己的知识却只有自己的脑袋中才能找到。

论坛徽章:
0
10 [报告]
发表于 2005-05-20 15:41 |只看该作者

关于execlp我还是想说两句

[quote]原帖由 "albcamus"]这个问题,就什么都解决了。[/quote 发表:


我明白你的意思,可是我当时就是不明白它这里为什么要写一个可有可无的东西。我总觉得第一个参数就说明了啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP