Newsgroup: it.comp.os.linux.development
Titolo: Richiesta d'aiuto!

Salve a tutti!
La mia richiesta risulterà forse un po' strana, ma credo che questo sia 
l'unico "luogo" adatto a qualcosa del genere, e quindi.. proviamo ;)
Sono uno studente universitario, e per il corso di Sistemi Operativi 
devo realizzare un mini-progetto in C; in realtà, questo progetto non è 
nulla di particolarmente gravoso (o almeno, così risulta nelle 
intenzioni del docente :), ad ogni modo avrei bisogno di alcune 
indicazioni "di massima" per avviare il lavoro (trovandomi in effetti 
un po' in difficoltà nell'imbastire il discorso); c'è qualcuno che 
avrebbe la possibilità di rispondere a qualche domanda, nel caso? ;)
Vi ringrazio anticipatamente per le eventuali risposte!
--
Sfb

 ....
No, non strana ma hai sbagliato due cose.
Prima di tutto parla (e scrivi) in italiano!
In particolare fai attenzione alla virgolette;
in italiano queste hanno due usi: per indicare 
la parola in quanto tale e non il suo significato 
(esempio: "cane" è una sostantivo maschile.)
e per indicare un discorso fatto da altri 
(esempio: Garibaldi rispose "Obbedisco!")
La seconda cosa e` chiedere di fare domande.
E` inutile ed otterrai soltanto risposte tipo:
"Si` puoi chiedere" "No, non sono il tuo 
professore!" "Perche` perdi tempo invece di
studiare?" e simili.
Fai la tua domanda; se questa e` intelligente 
e pertinente otterrai risposta altrimenti se 
fuori tema o dimostra solo che vuoi copiare
il compitino a casa imparerai molti modi 
originali di essere mandato a quel paese.

 originali di essere mandato a quel paese.
Ok, qui non posso fare a meno che darti ragione; avrebbe avuto più 
senso che avessi posto la questione, rimedierò subito; grazie 
dell'avvertimento ;)
Passo quindi al dunque:
devo realizzare un programma che simuli una piccola applicazione 
domotica, qualcosa di simile ad un "maggiordomo virtuale"; nello 
specifico, questa applicazione dovrebbe saper gestire l'arrivo di 
automobili al cancello della nostra abitazione, aprendo o meno il 
medesimo se le stesse comunicano la corretta chiave di apertura, e, nel 
caso, accendendo/spegnendo anche le luci del nostro vialetto d'accesso.
Riporto (più per completezza che per altro) anche la descrizione 
generale riportata nel testo che ci è stato consegnato:
"Supponete di essere gli inquilini di una casa intelligente. Quando arrivate, la sera, la vostra casa percepisce l’avvicinarsi della vostra automobile, apre il cancello e accende le luci del vialetto che conduce al garage. Dopo un tempo predeterminato le luci si spengono a meno che un altro condomino non abbia nel frattempo varcato la soglia. In questo caso lo spegnimento viene dilazionato di un quanto sufficiente per permettergli di parcheggiare ed entrare in casa. L’apertura del cancello è effettuata solo se ad avvicinarsi sono automobili autorizzate ad entrare, quindi se un’automobile non autorizzata chiede l’accesso il cancello deve rimanere chiuso. Per simulare il comportamento “intelligente” descritto sopra, occorre realizzare il codice dei processi maggiordomo, il cui scopo è servire le richieste giunte, e quello dei processi auto in arrivo, che simulano invece le auto che richiedono l’apertura del cancello."
A questo punto, stando a quanto scritto in seguito nelle indicazioni 
per il progetto, l'interfaccia tramite la quale realizzare tutto il 
comportamento sopra descritto, è una piccola console, che fornisca quei 
pochi comandi necessari a gestire il problema; è anche fornito un 
piccolo esempio (che ora riporto) per quanto riguarda la generazione 
dei processi "Auto" (ovverosia i processi che simulano le auto in 
arrivo), attivati da un altro processo, "GeneraAuto":
GeneraAuto legge le specifiche di generazione dei processi auto direttamente dalla tastiera tramite un programma di console (vedi sotto) secondo la sintassi seguente:
# new 3
#   nome_auto1 codice_casa1 15
#   nome_auto2 codice_casa2 38
#   nome_auto3 codice_casa3 2
# end
In aggiunta, è specificato anche quanto segue:
L'esempio sopra indica che la console, per mezzo di un canale comunicativo opportunamente sviluppato, invia al processo GeneraAuto le seguenti istruzioni: creare tre nuovi processi auto, con rispettivamente nome_auto1 che indica il nome del primo processo (un'etichetta a libero arbitrio), codice_casa1 che rappresenta la chiave che apre il cancella (se non corretta ovviamente viene negata l'apertura) e 15 secondi previsti per l'arrivo dell'auto a casa. Il ciclo si ripete n volte, ovvero il numero specificato dopo la keyword new e si conclude con la end. Se il tempo di arrivo è 0, l'apertura è immediata previa verifica della chiave di accesso.
Ecco dunque (finalmente, direte!) il mio primo problema: non sono 
sicuro di come debba esser realizzato il meccanismo di interazione tra 
la console ed il processo "GeneraAuto"; fermo restando che il metodo 
che intenderei usare prevede l'utilizzo delle pipe, ciò che mi lascia 
perplesso è il "momento" in cui GeneraAuto è avviato; a prima vista, mi 
parrebbe sensato pensare a questo processo come ad un demone, in 
continua attesa d'esser attivato tramite la keyword "new"; a mio 
avviso, infatti, "new" potrebbe attivare "GeneraAuto", che a quel punto 
si predispone a leggere da console i parametri per i processi da 
generare; ma a che pro utilizzare allora la keyword "end"? Non sarebbe 
sufficiente restituire il controllo completo alla console, una volta 
terminato il ciclo? E, tornando al punto cruciale, secondo voi è 
corretto (qualora la natura di "GeneraAuto" fosse simile ad un demone, 
appunto) prevedere l'avvio di "GeneraAuto" in concomitanza con l'avvio 
della console?
Penso di poter fermarmi qui ;)
Mi rendo conto d'esser stato parecchio prolisso.. e spero che le mie 
domande non risultino troppo banali, ma son alle prese con il mio primo 
problema di tal tipo, e ammetto d'esser in difficoltà! :(
Per concludere, non son alla ricerca del compitino già fatto ;).. direi 
invece che mi interessa fare scelte oculate nell'ottica del progetto, 
scelte che (probabilmente) sarebbero più facili se avessi una miglior 
conoscenza dell'ambiente GNU/Linux.. purtroppo, questa arriverà solo 
con tempo (e l'impegno, ma questo va da sè :)
Un grazie anticipato per le eventuali risposte :)

 ...
Faresti meglio ad aprire un altro thread riformulando 
la questione poiche` ormai mezza USENET ti ha plonkato
soltanto leggendo l'oggetto del thread e l'altra 
mezza ti ha plonkato leggendo il testo del tuo esercizio.

 mezza ti ha plonkato leggendo il testo del tuo esercizio.
Conservo la speranza che qualcuno passi di qui e abbia la pazienza di 
rispondermi, nonostante la banalità dei quesiti proposti e il titolo 
del post; e d'altronde, se veramente son stato plonkato da tutta 
Usenet, a poco servirebbe l'apertura di un nuovo thread, giusto?

 a poco servirebbe l'apertura di un nuovo thread, giusto?
Bravo, cominci ad imparare.

 che tutti i gruppi su USENET sono informali?
Secondo me esageri.
OK la correttezza grammaticale che e` sempre necessaria, ma e` un gruppo 
di discussione, non una rivista tecnica.
Qui la precisione non deve essere assoluta per niente. Si discute. Uno 
porta le sue esperienze, un altro lo corregge. Se ci sono errori in un 
post, qualcun altro li correggera`.
Visto che nessuno viene pagato per scrivere qui dentro, ognuno risponde 
quando/se/come ha tempo/voglia/umore di fare.
Se dovessi mettermi a correggere perfettamente ogni post, a verificare 
ogni singola affermazione che faccio e ad essere di una "precisione 
assoluta" come dici tu, smetterei di scrivere per il newsgroup e magari lo 
farei per una rivista, dietro pagamento.
Bye.

 Bravo, cominci ad imparare.
"Non si finisce mai d'imparare".

 della console?
Da quello che ho capito dal testo, "GeneraAuto" e' un demone e deve
necessariamente venir avviato prima del processo console.
Se "GeneraAuto" venisse lanciato e terminato insieme alla console
allora non servirebbe a niente poiche', a quel punto, converrebbe far
comunicare la console direttamente con i processi maggiordomo.
Inoltre considera che se "GeneraAuto" fosse legato alla console e se
specificassi un tempo molto lungo per l'arrivo della macchina al
cancello, non potresti chiudere la console per tutto quel tempo.
La keyword "end" serve semplicemente a dire al processo "GeneraAuto":
"inizia a contare i secondi che mancano all'arrivo delle automobili da
ora". In teoria potresti specificare 1 milione di automobili in arrivo
e dal momento in cui scrivi la prima riga all momento in cui scirivi
"end" potrebbe passare molto tempo.
Saluti,
The Librarian

 The Librarian
Grazie per la disponibilità ;) A buon rendere (sarà difficile, ma mai 
dire mai! :)

 essere una GUI, o sbaglio?)
Affermativo. La console fa semplicemente  da interfaccia al demone
"GeneraAuto" e potrebbe essere sostituita anche con un'applicazione
grafica. At tal riguardo ti consiglierei di utilizzare i socket
internet invece delle pipe per comunicare con "GeneraAuto". In tal
modo non e' necessario scrivere il programma console, visto che puoi
usare telnet.
Il demone "GeneraAuto" non fa altro che ricevere le richeste
dall'applicazione console e schedulare tali richieste verso i processi
maggiordomo. Considera che le richieste non e' detto che arrivino con
lo stesso ordine con il quale le automobili arrivano al cancello. Es:
- All'istante zero uso la console per schedulare l'arrivo di
automobile_1 dopo 2 minuti.
- Dopo 1 minuto uso la console per schedulare l'arrivo di automobile_2
dopo 30 secondi.
In questo caso "GeneraAuto" dovra' schedulare automobile_2 dopo 90
secondi dal tempo zero e automobile_1 dopo 120 secondi dal tempo zero.
Saluti,
The Librarian

 The Librarian
Ancora grazie ;)

 socket internet di cui parli tu).
non è detto , potrebbero essere anche TCP
-- 
L'esperienza e' quella cosa meravigliosa che ti rende capace di
riconoscere un errore quando tu lo commetti di nuovo.
                -- F. P. Jones

 non è detto , potrebbero essere anche TCP
Vero, ero andato a memoria ;) In effetti si parla precisamente di 
"socket TCP e stream UDP".

 cazzo di ateneo studi? :)

 Qui la precisione non deve essere assoluta per niente. 
Falso. Una cosa e` qualche errore di battitura o di 
grammatica ed un'altra e` scrivere un articolo 
assolutamente sconclusionato; hai letto il primo 
articolo di Sfb?

 il primo articolo di Sfb?
Grammaticamente abbastanza corretto, leggibile.
Posto nel modo sbagliato, sicuramente.
Ma non direi "assolutamente sconclusionato".
Comunque chiudiamola qui, non e` il "luogo" adatto a discuterne. ( ;P )
Bye.

raramente "ho" assistito "ad" una "discussione" più "idiota"

> raramente "ho" assistito "ad" una "discussione" più "idiota"
"rotfl"