我的老师要求我使用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/

10-13 07:26
查看更多