Más que un mensaje donde pido ayuda esto es más algo como "¿cómo se haría esto?" y dudas sobre estos dos hermosos comandos: fork y system.
Me hallaba yo en mi intento de programación de mi propia shell basada en Perl (de lo que últimamente van exclusivamente mis problemas, nunca sospeché que algo me llevara a tantas dudas) cuando, después de hacer módulos con subrutinas y variables que se modificaban desde el script de inicio para que unos ciertos comandos por defecto funcionen a la perfección (en esta shell van precedidos de un "#", por ej.: #ls, #cd, #get (una utilidad parecida a wget), #chmod, #help, #reboot, etc.) me vino la duda existencial, la parte más imponente de todo el proyecto desde el principio: Los comandos por defecto están bien, pero, ¿y si quiero hacer "fstab", por ejemplo? Y me vino a la cabeza system() con sus variantes qx(), exec() y todo eso, pero estos comandos me generan unas dudas:
- ¿Son independientes de una shell? Si voy a hacer una shell que dependa de otra para funcionar, vaya. Con independientes me refiero a que si necesitan de algo que no sea el compilador de Perl para funcionar estos comandos, no sé si me he explicado.
Para que quede más claro pongo un ejemplo. Si yo hiciera:
si el sistema no tuviera una shell que interpretara el comando, ¿funcionaría?
Luego de pensar usar este método, pensé: "No puede ser tan fácil, ¿el alojamiento de memoria?, ¿los PID?, así que buscando proyectos similares al mio encontré uno muy bueno que, aunque estaba en C, me sirvió mucho para comprender el trabajo de una shell mejor y me sirvió para algunas ideas, ya que C y Perl son parecidos, según mi opinión, y vi el uso extensivo del comando fork() que poseemos también en el amado Perl, así que asumí que algo tenía que ver con esto. Estudié un poco el uso de fork pero no me quedó claro.
Llegados a este punto y después de explicaros difusamente todas mis penas, ¿cómo podría hacer esto? ¿Cómo hacer que mi shell interprete comandos? ¿system o fork? No sé si pido mucho. De ser así notificádmelo para proseguir con mi búsqueda individual. Muchísimas gracias por adelantado y os deseo buena semana.
#DATOS:
página web del proyecto nombrado de la shell en C => https://brennan.io/2015/01/16/write-a-shell-in-c/