2009-06-30 8 views
7

So che se mi piace uno script di shell (ad esempio: prima dell'esecuzione) tutti i processi che iniziano dallo script della shell saranno anche niced.Il renice su un genitore renice il bambino?

Cosa succede se si avvia uno script di shell e lo si rinomina, anche tutti i processi figlio vengono aggiornati?

Cerca nelle pagine man di renice e non si fa menzione dei processi figli.

risposta

6

I bambini ereditano la priorità di un processo quando vengono creati. Ciò significa che se si rinomina il genitore e si inizia un figlio, avrà la priorità modificata.

I bambini che sono già in esecuzione quando si esegue il renice non sono interessati.

L'indizio è nelle pagine fork() man (avvio di un bambino è un'operazione fork/exec):

fork() crea un processo figlio che si differenzia dal processo genitore solo nella sua PID e PPID, e in il fatto che gli utilizzi delle risorse siano impostati su 0.

+0

Nel caso di una shell che utilizza l'opzione group (-g) di renice, inoltre, non cambierà i bambini correntemente in esecuzione poiché ogni comando eseguito in un altro processo gruppo. Ma la maggior parte dei programmi non cambierà il gruppo di processi dei loro figli, quindi è un modo per modificare i processi correlati. –

+0

Sì, ho pensato per "renice su un genitore", l'interrogante significava quel PID specifico. Ovviamente se si rinomina un gruppo di processi o un utente, altri processi potrebbero risentirne. – paxdiablo

+0

@paxdiablo: Voglio che il processo figlio abbia inizio con la sua priorità predefinita 0 non sulla priorità del processo padre, quindi? –

Problemi correlati