O código que você postou parece ter a intenção de imitar o seguinte comando shell:
cat path_source >path_destination
Mas, nesse cenário, >
não é um parâmetro para cat
; em vez disso, é
interpretado pelo seu shell, que executará cat
com um único
parâmetro path_source
e sua saída padrão conectada a
%código%. (Então o seu código C realmente faz
path_destination
.)
Uma maneira de imitar o que o comando cat path_source '>' path_destination
acima faz é construir um
string contendo seu comando shell ( cat
) e, em seguida, passe
que, usando exec, como um argumento para "cat ... >..."
, mas é difícil
torná-lo confiável e seguro, se você não sabe ao certo que o arquivo
nomes verificam algumas restrições.
Se você simplesmente renomear um arquivo, talvez seja melhor usar
função padrão /bin/sh -c
de rename
em vez disso. Se não, por favor
esclarecer sua pergunta.