Я использую 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?
> file2
в cat file1 > file2
не аргументы, отправленные в cat
. Они интерпретируются оболочкой (удар, в этом случае), для перенаправления вывода cat
кому: file2
. Вы не можете сделать этого непосредственно через execlp
. То, что Вы делаете, является эквивалентом cat file1 \> file2
в терминале, где >
, быть оставленным, не интерпретируется оболочкой.
Необходимо использовать system()
, который использует оболочку, чтобы выполнить командную строку или перенаправить вывод с помощью C функции как open()
и dup2()
. Как сделать, который является вопросом о программировании, который принадлежит на Переполнении стека.