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");