echo não é portátil; o bash builtin echo difere daquele do sistema /bin/echo binary. Despojado das complicações da chamada at e outras coisas que observamos
$ sh -c 'echo -e "echo hi"'
-e echo hi
$ bash -c 'echo -e "echo hi"'
echo hi
$ bash -c '/bin/echo -e "echo hi"'
-e echo hi
$
O system em C ++ (ou também C) chama sh , o que (provavelmente) não tem echo embutido e, portanto, o sistema /bin/echo é usado e -e é impresso como está, porque esse sistema echo não tem ideia do que é -e . Mesma história quando via bash o sistema /bin/echo é usado. Você pode considerar em vez de printf para melhor portabilidade, ou para evitar sh de chamadas estranhas e, em vez disso, apenas fork / exec e gravar em at diretamente.