Pregunta

Tengo un proyecto que requiere el uso de la familia exec. Mi proyecto consiste en hacer un shell interactivo. El shell implementará algunos comandos básicos como cd, ls, echo, etc. He estado investigando el uso de exec, pero no he encontrado un sitio útil. Cualquier enlace sugerido ayudaría.

int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);

¿Cómo puedo obtener el resultado de esta operación para mostrar en la pantalla?

¿Fue útil?

Solución

El código que escribiste funciona para mí en un programa de prueba simple que no hace nada más. Recuerde, cuando llama a execl, el proceso conserva todos los manejadores de archivos antiguos. Entonces, sea cual sea el stdout cuando llames execl, será el mismo cuando se cargue el nuevo binario. Si solo quieres que la salida vaya a la terminal, asegúrate de que la salida estándar vaya a la terminal.

Si desea realizar I / O con otro programa, popen es bueno para esto (como se mencionó en mgb). Hará un nuevo proceso, configurará la plomería para usted, llamará a alguna variante de exec y devolverá un identificador de archivo que puede usar para la comunicación.

Otros consejos

haciendo

int fd = 1;
dup(fd);
close(fd);

obtiene el resultado en la pantalla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top