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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top