Newsgroup: it.comp.os.linux.development
Titolo: Creare Servizi Linux

Vorrei creare servizi linux (Quei particolari programmi che Si avviano
all'avvio della macchina).
Come devo muovermi:
    Quali libri devo comprare?
    o se potete spiegarmi come si creano.
    Volevo specificare che so già programmare in c/c++ ma non so niente
delle librerie di linux.
Se qualcuno mi può aiutare grazie
Ciao e grazie a tutti
    Gabriele.

 Come devo muovermi:
Un metodo brutale e' quello di fare in modo che il programma venga lanciato
da init inserendo una riga nel file /etc/inittab (vedi relativa man page).
In genere invece i servizi vengono lanciati e fermati dagli script di avvio
in /etc/init.d che vengono eseguiti da init al cambiamento di runlevel.
--
Alessandro Staltari
staltari(a)
geocities.com

>     Quali libri devo comprare?
Advanced Programming in the Unix Environment, di Stevens,
c'è un intero capitolo dove spiega la creazione di un demone: in 
sostanza crei il programma, lo forki e poi elimini l'istanza 
principale, rimane così "vivo" il figlio...
ciao,
Marco Zanon [
http://www.marcozanon.com
]

 all'avvio della macchina).
Demoni. La struttura e` piu` o meno questa:
int main() {
	pid_t pid;
	if ((pid = fork()) == -1) {
		/* errore */
		return EXIT_FAILURE;
	}
	if (pid == 0) {
		/* Main loop del demone */
	}
	return EXIT_SUCCESS;
}
In parole  povere il  processo fork()a, il  figlio rimane  in background
facendo  quello  che  deve  fare   mentre  il  padre  esce  subito  dopo
l'inizializzazione.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Not an editor command: Wq

 l'inizializzazione.
Il figlio, poi, deve chiudere STDOUT, STDIN e STDERR, e ricorrere ad altro
per la comunicazione con l'utente (e.g., un file di log o syslog).
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 file di log o syslog).
per curiosità mia, come si "chiude" stdout (ad esempio)?
grazie - ciao,
Marco Zanon [
http://www.marcozanon.com
]

 per curiosita` mia, come si "chiude" stdout (ad esempio)?
close(0);	/* stdin */
close(1);	/* stdout */
close(2);	/* stderr */
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Runtime error 6D at f000:a12f : user incompetente

 per curiosità mia, come si "chiude" stdout (ad esempio)?
hint: close(2)
+++
BTW: in cosa si distingue, operazionalmente, close(2) da fclose(3) in
questi casi?



Il parametro di close e' un int, mentre per fclose e' FILE *.
Da uno si puo' passare all'altro ma sono due gestioni diverse. Per esempio
gestire un file attraverso FILE * e' piu' ad alto livello che attraverso il
file descriptor direttamente (vedi buffering, disponibilita' della
printf/scanf, e su sistemi MS conversione cr/lf per file di testo).
Alessandro


Ma e' solo consigliabile per evitare di usarli per sbaglio o c'e' qualche
motivo piu' importante?
Alessadnro

 motivo piu' importante?
E` nella definizione di `daemon': un processo che lavora in
background, la cui directory di lavoro e` "/" e che non ha
stream aperti, se non quelli che apre e che chiude lui.
Questo perche' un demone non deve scrivere su una console,
normalmente, ma solo in un file di log, per essere completamente
trasparente all'utente (se Apache scrivesse su una tty, ad esempio,
come faccio, io, root sloggato e magari neanche presente fisicamente,
a sapere che qualcosa non funziona?).


> hint: close(2)
grazie :)
Marco Zanon [
http://www.marcozanon.com
]

 close(2);     /* stderr */
grazie anche a te :)
Marco Zanon [
http://www.marcozanon.com
]

 questi casi?
Che il primo ti compila il secondo no.
Devi usare fclose(stdout)
Ciao
Simone

 wrote in message
news:Fq8g8.29308$_u5.8...@news1.tin.it...

Dai un'occhiata al paragrafo
1.7 How do I get my program to act like a daemon?
=================================================
in 
http://www.faqs.org/faqs/unix-faq/programmer/faq/
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Che il primo ti compila il secondo no.
Penso che con il numero intedesse la sezione del man.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
La vispa candela bruciava l'erbetta
creando un'essenza alquanto sospetta;
sembrava l'odore di una sacrestia
ma presto mi accorsi che era maria.

 Devi usare fclose(stdout)
Questo lo so. (Hint: fclose(3) == man 3 fclose).
