Redirecionando a saída quando executo “bash -c…” de um programa em C

2

Digamos que eu tenha um programa C e nele eu queira executar um comando shell e redirecionar sua saída para o arquivo, usando o stdlib system .

system("bash -c \"echo $HOME\" > a.txt");

Agora, isso é para ilustração, na verdade não funciona. Como faço o redirecionamento de saída funcionar? Porque eu estou chamando bash de uma função eu preciso do processo em si para fazer o redirecionamento.

    
por sashoalm 14.12.2011 / 14:39

1 resposta

1

A função system já invoca um shell. Isso pode ser qualquer shell sh (Bourne / POSIX), nem sempre bash. A menos que você precise usar construções específicas do bash, você não precisa invocar outro shell dentro dele. Se você estiver executando um comando simples, apenas inclua o redirecionamento na linha de comando. Se você estiver executando comandos mais complexos, pode ser necessário colocar chaves em toda a sequência de comandos.

system("echo hello >somefile");
system("{ echo foo; echo bar; } >somefile");
    
por 16.12.2011 / 08:47

Tags