Невозможно использовать cat для копирования из файла в другой файл с помощью execlp на C [закрыто]

Я использую 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?

0
задан 30 November 2016 в 14:57

1 ответ

> file2 в cat file1 > file2 не аргументы, отправленные в cat. Они интерпретируются оболочкой (удар, в этом случае), для перенаправления вывода cat кому: file2. Вы не можете сделать этого непосредственно через execlp. То, что Вы делаете, является эквивалентом cat file1 \> file2 в терминале, где >, быть оставленным, не интерпретируется оболочкой.

Необходимо использовать system(), который использует оболочку, чтобы выполнить командную строку или перенаправить вывод с помощью C функции как open() и dup2(). Как сделать, который является вопросом о программировании, который принадлежит на Переполнении стека.

6
ответ дан 28 September 2019 в 02:27

Другие вопросы по тегам:

Похожие вопросы: