Risposte:
Dipende esattamente da come viene aggiornato l'eseguibile. Se lo stesso file viene aperto e parti di esso vengono modificate, accadranno cose brutte. Se viene rimosso, il file viene rimosso dalla struttura di directory del filesystem, ma in realtà non scollegato (cioè eliminato) fino a quando l'ultimo processo che lo ha aperto non lo ha eseguito. Quindi, se l'eseguibile viene rimosso e uno nuovo con lo stesso nome scritto al suo posto, quello vecchio dovrebbe continuare a funzionare bene.
Continueranno ad andare. Forse si schiantano orribilmente se provano ad accedere a se stessi e ricevono qualcosa di completamente sbagliato. Non lo farei se non dovessi :)
Comprendo che il kernel Linux ha un componente chiamato caricatore che apre il file eseguibile stesso, contenente l'immagine, durante il processo di caricamento / collegamento e una volta terminato il collegamento con le librerie, ecc., Il caricatore chiude il file. Pertanto, questo processo si verifica ed è completo quando il kernel avvia effettivamente il processo.
Non sono sicuro se si debba fare riferimento all'eseguibile originale su disco se l'eseguibile in seguito tenta di importare librerie esterne.
Direi, ed è stata la mia esperienza che, se si elimina l'eseguibile su disco, l'eseguibile caricato in memoria non è interessato. Allo stesso modo, se il file eseguibile viene sostituito con una versione più recente, quelle attualmente in esecuzione non vengono aggiornate "automaticamente" a meno che non vengano arrestate e riavviate.
Ho avuto problemi con un controller RAID che ha causato l'intero disco su cui era montata la directory principale e altre partizioni per agire all'improvviso come se fosse disconnesso. Impossibile caricare nuovi programmi, ma quelli in memoria funzionavano bene, fino a quando non avevano bisogno di file dal disco.