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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top