Domanda
Ho un progetto che richiede l'uso della famiglia exec. Il mio progetto consiste nel creare una shell interattiva. La shell implementerà alcuni comandi di base come cd, ls, echo, ecc. Ho cercato l'uso di exec, ma non ho trovato un sito utile. Qualsiasi link suggerito sarebbe di aiuto.
int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);
Come posso visualizzare l'output di questa operazione sullo schermo?
Soluzione
Il codice che hai scritto funziona per me in un semplice programma di test che non fa altro. Ricorda, quando chiami execl, il processo conserva tutti i vecchi handle di file. Quindi qualunque cosa stdout fosse quando chiami execl, sarà la stessa quando verrà caricato il nuovo binario. Se vuoi solo che l'output vada al terminale, assicurati solo che stdout vada al terminale.
Se vuoi fare I / O con un altro programma, popen è buono per questo (come menzionato in mgb). Forcherà un nuovo processo, installerà l'impianto idraulico per te, chiamerà una variante di exec e restituirà un handle di file che puoi usare per la comunicazione.
Altri suggerimenti
fare
int fd = 1;
dup(fd);
close(fd);
visualizza l'output sullo schermo.