不能使用cat在C中使用execlp从文件复制到另一个文件

0 bash scripts files c copy

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

test@ubuntu:~/Teme$ cat file1 > file2
Run Code Online (Sandbox Code Playgroud)

一切正常,但如果我编写 C 代码并使用它:

execlp("/bin/cat","cat","file1",">","file2",NULL);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

content of file1
cat: '>': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我认为 execlp 正在一个一个地进行 cat 论点,所以我尝试了

execlp("/bin/cat","cat","file1 > file2",NULL);
Run Code Online (Sandbox Code Playgroud)

但后来我收到了这个错误:

cat: 'file1 > file2': No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

mur*_*uru 6

> file2incat file1 > file2不是发送到 的参数cat。它们由外壳程序(在本例中为 bash)解释,以将输出重定向catfile2. 您不能直接通过execlp. 您正在做的相当于cat file1 \> file2在终端中,其中>被转义的 不被外壳解释。

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