首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2013-01-23 
在execlp中使用ls,无法使用文件通配符!程序中我用chdir,把目录跳到了 /home/123然后执行 execlp(ls, ls

在execlp中使用ls,无法使用文件通配符!
程序中我用chdir,把目录跳到了 /home/123
然后执行 execlp("ls", "ls", "-rt", "1*", NULL);
结果 ls: 无法访问1*:没有那个文件或目录

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


[解决办法]
1* 这种通配符的扩展是有sh来进行的。调用函数execlp时不会进行这种扩展。
用system("ls -rt 1*")会启动sh然后运行ls.
[解决办法]

引用:
程序中我用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*");

热点排行