我的老师让我用 execlp 编写一个程序,它的功能与:
scp * mylogin@mycomputer:/home/mylogin/myfolder
我试过:
execlp("scp", "scp", "*", "mylogin@mycomputer:/home/mylogin/myfolder", 0)
我发现它不起作用,因为它是将 * 转换为文件名的 shell。
有什么方法可以做到吗,我真的不知道如何将所有文件名放入 execlp 调用中?
如果我不清楚,我很抱歉,我很难解释:(但我真的在寻找任何关于“*”如何工作的提示,这会很棒:)
最佳答案
您可以使用 glob(3)
执行全局匹配。然后分配一个数组,将匹配的文件名和其他参数放入 scp。在这种情况下,您不想使用 execlp()
,而是使用 execvp()
,因为您现在有一个数组而不是参数列表。
但是,赋值本身相当愚蠢:如果您想要 shell 通配符扩展,请使用 system()
,它在 shell 中执行给定的命令(具有所有优点和缺点)。
关于c - 将 shell "*"实现到 C 程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9879132/