Não é possível usar o cat para copiar do arquivo para outro arquivo usando execlp em C [closed]

0

Estou usando o Ubuntu 16.10. Eu quero copiar o conteúdo de um arquivo para outro arquivo usando execlp. Eu tenho dois arquivos chamados file1 (com conteúdo) e file2 (vazio). Se eu der o seguinte comando no terminal

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

Tudo funciona perfeitamente, mas se eu escrever um código em C e usar isso:

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

Eu recebo o erro:

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

Eu achei que execlp está aceitando argumentos de gato um por um, então eu tentei

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

mas depois recebi este erro:

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

Como posso copiar o conteúdo de um arquivo para outro usando execlp / execl?

    
por muru 30.11.2016 / 11:57

1 resposta

6

> file2 in cat file1 > file2 não são argumentos enviados para cat . Eles são interpretados por o shell (bash, neste caso), para redirecionar a saída de cat para file2 . Você não pode fazer isso diretamente via execlp . O que você está fazendo é o equivalente a cat file1 \> file2 em um terminal, onde o > , sendo escapado, não é interpretado pelo shell.

Você precisa usar system() , que usa um shell para executar uma string de comando ou redirecionar a saída usando C funciona como open() e dup2() . Como fazer isso é uma questão de programação, que pertence ao Stack Overflow.

    
por muru 30.11.2016 / 12:09