Sistemas Operativos > GNU/Linux

 Re: shell usando fork() y execvp();

(1/4) > >>

ciros:
No se como hacer un pequeño shell que reconosca mas de un argumento y solo puedo utilizar fork() y execvp(),

rafa_lopez:
Tengo hecha una shell que cumple esas características, a parte de muchas otras como procesos en background(&), redireccionamientos(>, <), tuberias(|), comandos internos (ps, cd, pwd), manejo de variables de entorno, gestor de consola,...

si te interesa te puedo pasar el codigo

De Profundiis:
Hola,
hace un par de años tuve que hacer un Shell para Linux (microshell lo llamamos).
Tengo el código fuente por ahí. También hacía redirecciones de salida y entrada y usaba tuberías.

No sé si el problema que tienes es que tu programa no reconoce varios tokens o es que no te tira bien el execvp. Pero para hacer funcionar el shell, con el fork() y el execvp() vas sobrado.

Lo primero que hacía yo era separar la línea de comandos (después de analizarla sintáctica y semánticamente) en varios tokens y guardarla en una estructura con char  *argumentos[MAXTOKENS]
o algo parecido. Luego bastaba con crear un proceso hijo mediante fork(), poner al padre a esperar al hijo con wait() o waitpid() y usar el execvp con:
error = execvp(mandato.argumentos[0], &mandato.argumentos[0]);
...si no me equivoco.

Pero ya te digo, debo tener el código por ahí. También hicimos un 'microat'. Un at de linux pero con menos funcionalidades:)

Bueno, si quieres algo envía un U2U que tengo ganas de probarlo:P y te mando el código.

Saludos.

gregobm:
Yo necesito una shell de linux escrita en C, a ver si me podeis pasar las que teneis vosotros echas para echarle un vistazo.

Si podeis mandarmela a gregobm arroba hotmail punto com.

Gracias de antemano.

NRM:
Seria interesante e instructivo leer ese codigo fuente. Si lo encuentras te agradeceria que lo publicaras en el foro.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa