En una plataforma integrada (sin partición de intercambio), tengo una aplicación cuyo proceso principal ocupa la mayor parte de la memoria física disponible. El problema es que quiero lanzar un script de shell externo desde mi aplicación, pero usar fork() requiere que haya suficiente memoria para 2x mi proceso original antes de que pueda crearse el proceso hijo (que finalmente se ejecutará en algo mucho más pequeño) .En un proceso que utiliza mucha memoria, ¿cómo puedo generar un shell sin una horquilla ávida de memoria()?
¿Hay alguna forma de invocar un script de shell desde un programa C sin incurrir en la sobrecarga de memoria de un fork()?
He considerado soluciones alternativas como tener un proceso secundario más pequeño que es responsable de crear shells, o tener un script de "observador" que señalo tocando un archivo o algo así, pero preferiría tener algo más simple.
Ver Greg Hewgill a continuación.Esto depende de alguna manera de la plataforma. ¿Podría explicar qué plataforma está utilizando (por ejemplo, ¿tiene una MMU?) – ConcernedOfTunbridgeWells
¿No es una pregunta engañosa * ayer *? http://stackoverflow.com/questions/2731531/faster-forking-of-large-processes-on-linux –
Sí y no, @Pavel, este no es específico de Linux y tiene información adicional sobre lo que se está ejecutando - un script de shell. El otro interlocutor puede haber tenido la opción de volver a escribir su aplicación para usar hilos (si el programa ejecutado era un ejecutable bajo su control en lugar de bash/ksh/other-shell) pero probablemente no en este caso. – paxdiablo