Pergunta
Eu tenho um projeto no requer o uso da família exec. Meu projeto consistem em fazer um shell interativo. O shell irá implementar alguns comandos básicos, como cd, ls, eco, etc. Fui pesquisando o uso de exec, mas não encontrei um site útil. Todos os links sugeridos ajudaria.
int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);
Como eu poderia obter o resultado desta operação para mostrar na tela?
Solução
O código que você escreveu obras para mim em um programa de teste simples que não faz nada mais. Lembre-se, quando você chamar execl, o processo mantém todos os antigos identificadores de arquivo. Portanto, tudo o stdout foi quando você chamar execl, será o mesmo quando o novo binário é carregado. Se você quer apenas a saída para ir ao terminal, apenas certifique-se stdout vai para o terminal.
Se você quer fazer I / O com outro programa, popen é bom para isso (como mgb mencionado). Ele vai desembolsar um novo processo, configurar encanamento para você, ligue alguma variante do exec e retornar um identificador de arquivo que você pode usar para a comunicação.
Outras dicas
fazendo
int fd = 1;
dup(fd);
close(fd);
recebe a saída para a tela.