Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti, Mi chiamo Aleksi e ho un piccolo problemi con un programma scritto in C che sostanzialmente dovrebbe creare un demone che accetta connessioni su una determinata porta e quindi fa gestire la connessione a un processo figlio.
Quando il figlio è terminato però, vorrei che il padre lo chiudesse ma senza che smetta di accettare connessioni... Eccovi il codice:
Codice sorgente - presumibilmente C++
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
FILE*fd;
int main(void)
{
pid_t demone, sid;
fd=fopen("game.log","a");
/*Controllo file di configurazione*/
/*...*/
/* Creazione Demone*/
demone = fork();
if(demone==0){
sid = setsid();
if(sid < 0){
printf("Errore nel settaggio dell'id di sistema");
Salve a tutti, Mi chiamo Aleksi e ho un piccolo problemi con un programma scritto in C che sostanzialmente dovrebbe creare un demone che accetta connessioni su una determinata porta e quindi fa gestire la connessione a un processo figlio.
Quando il figlio è terminato però, vorrei che il padre lo chiudesse ma senza che smetta di accettare connessioni... Eccovi il codice:
Codice sorgente - presumibilmente C++
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
FILE*fd;
int main(void)
{
pid_t demone, sid;
fd=fopen("game.log","a");
/*Controllo file di configurazione*/
/*...*/
/* Creazione Demone*/
demone = fork();
if(demone==0){
sid = setsid();
if(sid < 0){
printf("Errore nel settaggio dell'id di sistema");
Salve a tutti, Mi chiamo Aleksi e ho un piccolo problemi con un programma scritto in C che sostanzialmente dovrebbe creare un demone che accetta connessioni su una determinata porta e quindi fa gestire la connessione a un processo figlio.
Quando il figlio è terminato però, vorrei che il padre lo chiudesse ma senza che smetta di accettare connessioni... Eccovi il codice:
Codice sorgente - presumibilmente Plain Text
...
Sapete dirmi se c'è un modo migliore per gestire le connessioni o come posso risolvere il mio problema utilizzando questo sistema? Grazie
non è che hai le idee un po' confuse? il padre è già stato terminato, il codice sotto è quello del figlio, che in questo caso è un demone.
Se vuoi che continui ad accettare connessioni non basta togliere l'exit(0); dal while?
Testo quotato
Postato originariamente da Numa Pompilio: Dovresti gestire il padre con l'if(pid>0)
della serie consigli inutili usate la testa ragazzi, i codici non devono essere tutti identici
Ultima modifica effettuata da lumo il 07/12/2010 alle 21:43
si beh ma il padre crea un figlio, e quando il figlio riceve una connessione si crea un "nipote" che la gestisce... questa era la mia idea... solo non posso mettere in wait il figlio, quando ci saranno altre connessioni in arrivo...