无法使用 cat 在 C 中使用 execlp 将文件复制到另一个文件

无法使用 cat 在 C 中使用 execlp 将文件复制到另一个文件

我使用的是 Ubuntu 16.10。我想使用 execlp 将一个文件的内容复制到另一个文件。我有两个文件,分别名为 file1(包含内容)和 file2(空)。如果我在终端上输入以下命令

test@ubuntu:~/Teme$ cat file1 > file2

一切都运行完美,但如果我编写 C 代码并使用它:

execlp("/bin/cat","cat","file1",">","file2",NULL);

我收到错误:

content of file1
cat: '>': No such file or directory

我以为 execlp 正在逐个接受 cat 参数,所以我尝试

execlp("/bin/cat","cat","file1 > file2",NULL);

但后来我收到这个错误:

cat: 'file1 > file2': No such file or directory

如何使用 execlp/execl 将内容从一个文件复制到另一个文件?

答案1

> file2不是cat file1 > file2发送给 的参数cat。它们被解释为贝壳cat(在本例中为 bash),将的输出重定向到file2。您不能直接通过 执行此操作execlp。您所做的相当于cat file1 \> file2在终端中,其中>被转义,不会被 shell 解释。

你需要使用system(),它使用 shell 执行命令字符串,或者使用 C 函数(如open()和)重定向输出dup2()。 怎么做是一个编程问题,属于 Stack Overflow。

相关内容