Su una piattaforma integrata (senza partizione di swap), ho un'applicazione il cui processo principale occupa la maggior parte della memoria fisica disponibile. Il problema è che voglio lanciare uno script di shell esterno dalla mia applicazione, ma l'uso di fork() richiede che ci sia abbastanza memoria per 2x il mio processo originale prima che il processo figlio (che alla fine eseguirà se stesso in qualcosa di molto più piccolo) possa essere creato .In un processo che utilizza molta memoria, come posso generare una shell senza fork() affamato di memoria?
Quindi esiste un modo per richiamare uno script di shell da un programma C senza incorrere nell'overhead di memoria di un fork()?
Ho considerato soluzioni alternative come avere un processo secondario più piccolo che è responsabile della creazione di shell, o di avere uno script "watcher" che segnali toccando un file o somesuch, ma preferirei avere qualcosa di più semplice.
See Greg Hewgill di seguito.Questo dipende in qualche modo dalla piattaforma: potresti per favore approfondire su quale piattaforma stai utilizzando (ad esempio, ha una MMU?) – ConcernedOfTunbridgeWells
Non è un errore di una domanda? * Ieri * ?? http://stackoverflow.com/questions/2731531/faster-forking-of-large-processes-on-linux –
Sì e no, @Pavel, questo non è specifico per Linux e ha informazioni aggiuntive su ciò che viene eseguito - uno script di shell. L'altro interlocutore potrebbe aver avuto la possibilità di riscrivere la propria applicazione per utilizzare i thread (se il programma di esecuzione era un eseguibile sotto il loro controllo piuttosto che bash/ksh/other-shell) ma probabilmente non in questo caso. – paxdiablo