在execlp中使用ls,无法使用文件通配符!

youngwolf 2013-01-11 11:18:59
程序中我用chdir,把目录跳到了 /home/123
然后执行 execlp("ls", "ls", "-rt", "1*", NULL);
结果 ls: 无法访问1*:没有那个文件或目录

但我在shell中,执行ls -rt 1* 是有结果的(1*能匹配上)。
chdir也是成功的,因为我 execlp("ls", "ls", "-rt", NULL);时,能得到正确的结果。

...全文
171 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngwolf 2013-01-11
  • 打赏
  • 举报
回复
的确是个简单问题,对linux不熟悉造成的。
Cody2k3 2013-01-11
  • 打赏
  • 举报
回复
引用 楼主 yang79tao 的回复:
程序中我用chdir,把目录跳到了 /home/123 然后执行 execlp("ls", "ls", "-rt", "1*", NULL); 结果 ls: 无法访问1*:没有那个文件或目录 但我在shell中,执行ls -rt 1* 是有结果的(1*能匹配上)。 chdir也是成功的,因为我 execlp("ls", "ls", "-rt", NULL);时……
可以调用shell,例如使用ksh execlp("/usr/bin/ksh", "/usr/bin/ksh", "-c", "ls A*");
mymtom 2013-01-11
  • 打赏
  • 举报
回复
1* 这种通配符的扩展是有sh来进行的。调用函数execlp时不会进行这种扩展。 用system("ls -rt 1*")会启动sh然后运行ls.

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧