2016-04-15 32 views
5

Quando un guscio (ad esempio bash) richiama un file eseguibile, prima fork stessa, e quindi la sua copia execve il file eseguibile.Come vengono implementati i comandi incorporati nella shell?

Quando una shell richiama comandi incorporati, non viene creato alcun nuovo processo e execve può operare solo su file eseguibili mentre i comandi incorporati non sono archiviati in file eseguibili.

comandi Così come sono builtin memorizzati, e come vengono invocati in termini di chiamate di sistema?

+0

Questa domanda mostra che ti stai * aspettando * un comando incorporato per essere "lanciato" come un eseguibile esterno. Perché quel? sono integrati. –

+4

Ci sono downvotes su tutte le domande/risposte. Perché? – pfnuesel

+0

I builtins sono archiviati in un file eseguibile, si chiama bash. – 123

risposta

1

"comando incorporato" significa che non c'è bisogno di eseguire un programma esterno. Quindi no, non c'e 'alcun problema con lo execve e no, non c'e' nemmeno alcuna chiamata di sistema necessariamente coinvolta. La shell in pratica analizza solo una stringa di comando e vede "hey, questo è un comando incorporato, eseguiamo questa e quella funzione".

+0

ha! primo uno :) –

+1

eh, perché il downvote? –

1

Si può immaginare che siano uguali alle funzioni di shell.

Così, invece di lanciare processo esterno del guscio invoca una funzione libreria di funzioni interne che legge emette ingresso il risultato e fa praticamente la stessa funzione principale del programma regolare.

0

Il processo shell stessa solo gestisce il comando incorporato e potenzialmente stessa o la sua nell'ambiente come conseguenza modifica. Potrebbe non esserci nessuna chiamata di sistema effettuata.

+1

hm, da dove proviene il downvote? questa risposta è corretta come qualsiasi altra data qui. –