微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将shell“*”实现为一个C程序

我的老师问我使用execlp来做一个程序,

scp * mylogin@mycomputer:/home/mylogin/myfolder

我试过了 :

execlp("scp","scp","*","mylogin@mycomputer:/home/mylogin/myfolder",0)

我发现它不起作用,因为它是将*转换为文件名的shell。

有没有办法,我可以做到这一点,我真的不知道我可以如何将所有的文件名称进入execlp调用

让OpenCL在Optimus技术的Linux笔记本电脑上工作

如何卸载未完成的COM对象/库完成重新启动后?

如何获取驱动器号和装载path – MSDN

增加IP地址

MinGW Windows.h不编译

我很抱歉,如果我不清楚,这只是很难解释:(但我真的寻找任何提示如何“*”的作品,这将是伟大的:)

静态指针dynamic分配数组

只有recv()函数可以使一个套接字非阻塞?

用户模式和内核模式之间的共享内存

水平合并cv :: Mat

Linux ELF 32位加载

你可以使用glob(3)来执行glob匹配。 然后分配一个数组,在其中放置匹配的文件名和其他参数到scp。 在这种情况下,您不会希望使用execlp()而是使用execvp() ,因为您现在有一个数组而不是参数列表。

但是,赋值本身是相当愚蠢的:如果你想要shell通配符扩展,使用system() ,它在shell中执行给定的命令(有其优点和缺点)。

据我所知,C标准库不提供扫描目录的功能。 在您的平台上可用的dirent.h中,有opendir()函数及其关联。 你可以研究一下。

其他答案提到glob.h中的glob() ,但也是平台相关的。

您可以使用glob(3)函数来扩展通配符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐