View previous topic :: View next topic |
Author |
Message |
mouser Veteran
Joined: 10 Aug 2004 Posts: 1419 Location: Milano
|
Posted: Thu Dec 09, 2004 9:20 am Post subject: [OT] Come programmare una shell? |
|
|
Chiedo anticipatamente venia per l'OT.... spero che gli dei/moderatori siano clementi
In ogni caso saro' breve... sono circa 2/3 giorni che cerco in internet e non trovo nulla
di nulla.... cercavo una guida/tutorial sulla programmazione di una shell.
Ora: NON sulla programmazione in shell (bash script, etc.) ma sulla programmazione di shell,
ovvero come scrivere una shell.
Qualcuno sa aiutarmi???
Grazie mille.
Ciriciao
mouser |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31455 Location: here
|
Posted: Thu Dec 09, 2004 9:29 am Post subject: |
|
|
Ma intendi il terminale che poi si bash su sh, bash, csch,... oppure proprio il "linguaggio" _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Thu Dec 09, 2004 9:30 am Post subject: Re: [OT] Come programmare una shell? |
|
|
mouser wrote: | Ora: NON sulla programmazione in shell (bash script, etc.) ma sulla programmazione di shell,
ovvero come scrivere una shell. |
Parti dall'inizio.
Che linguaggio vuoi usare? Cosa dovrebbe fare questa shell? _________________ Ciao da me! |
|
Back to top |
|
|
mouser Veteran
Joined: 10 Aug 2004 Posts: 1419 Location: Milano
|
Posted: Thu Dec 09, 2004 11:21 am Post subject: |
|
|
OK, OK sono stato un po' frettoloso.....
Sto scrivendo un simil-OS basato su MINIX, e il libro che sto leggendo parla della programmazione del OS e della procedura di boot, ma non della shell.
Vorrei utilizzare l'amatissimo C
Scusate ancora la poca chiarezza.
Grazie mille.
Ciriciao
mouser |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Thu Dec 09, 2004 11:23 am Post subject: |
|
|
In sostanza devi scrivere una shell? _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Thu Dec 09, 2004 11:26 am Post subject: |
|
|
mouser wrote: | Sto scrivendo un simil-OS basato su MINIX, e il libro che sto leggendo parla della programmazione del OS e della procedura di boot, ma non della shell.
Vorrei utilizzare l'amatissimo C
|
In linea di massia la shell "base" é semplicemente un loop "leggi_comando/esegui_comando".
Lavorando in C puoi definire la grammatica per i comando interni con flex/bison e implementare l'editing di linea con le librerie readline/history
IMHO é meglio se ricicli la bash _________________ Ciao da me! |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Thu Dec 09, 2004 11:27 am Post subject: |
|
|
Concordo con randomaze per riciclare la bash. Ti ritrovi molto del lavoro fatto _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31455 Location: here
|
Posted: Thu Dec 09, 2004 11:28 am Post subject: |
|
|
randomaze wrote: | IMHO é meglio se ricicli la bash |
Concordo... o almeno all'inizio usare quella _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Thu Dec 09, 2004 12:23 pm Post subject: |
|
|
Beh, la bash e` buona ma un po' complicata all'inizio: io ad esempio preferirei ripartire from scratch che dovermi leggere qualche migliaio di righe di codice (+ 5 o 6 patches), soprattutto visto che e` banale. In effetti tutti i comandi sono programmi esterni, ad eccezione di un paio, di cui gli unici fondamentali da reimplementare sono cd, che si traduce in una sola system call, e la definizione delle variabili di ambiente, che si traduce nell'allocazione e la manutenzione delle strutture dati; mi pare null'altro... Beh, certo, prima di lanciare ogni programma occorre forkarsi e poi execve mentre il padre attende il figlio, ma mi pare ci fosse una system call per fare tutto questo in automatico, quindi una shell molto semplice si potrebbe fare in poche righe di codice.
EDIT: ah gia`, si dovrebbe anche mettere su la ricerca in $PATH per ogni comando esterno...
my 2 eurocents
ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997
Last edited by Ferdinando on Thu Dec 09, 2004 12:28 pm; edited 1 time in total |
|
Back to top |
|
|
mouser Veteran
Joined: 10 Aug 2004 Posts: 1419 Location: Milano
|
Posted: Thu Dec 09, 2004 12:26 pm Post subject: |
|
|
Ringrazio tutti per i suggerimenti.....
pensavo che una shell fosse piu' che un masticatore di comandi e system-call.
Comunque credo implementero' qualcosa come bash, tanto per iniziare, dopodiche' magari leggo un po' di codice
Grassie mille a tutti, ne'
Ciriciao
mouser
PS. Devo mettere il tag risolto anche se alla fine non era proprio un problemone?????? |
|
Back to top |
|
|
zUgLiO l33t
Joined: 12 Aug 2003 Posts: 754 Location: Ferrara (Italy)
|
Posted: Thu Dec 09, 2004 12:31 pm Post subject: |
|
|
Per il corso di Sistemi Operativi I ci hanno fatto implementare una shell rudimentale, supportava cd, & && > < >> >> | .
Questo è il link del corso, secondo me puoi trovare qualcosa di interessante
http://www.fe.infn.it/~didomeni/LabSisOp2004.html _________________
voglio poi dire che il tempo mi avrà fatto abituare,
ma io non trovo nemmeno brutta la stiva buia di questa nave
|
|
Back to top |
|
|
|