CreateProces et fork

laetitiavincent Messages postés 61 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 19 janvier 2007 - 19 janv. 2007 à 09:29
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 21 janv. 2007 à 21:59
Bonjour tout le monde
Alors je sais que fork n'existe pas sous windows. On peut utiliser CreateProcess mais mon souci et que je mélange ca avec un socket
Je m'explique
Je suis sur un serveur sous windows et je crée un socket qui, à la demande d'un client doit se dédoubler pour traiter sa demande et être disponible pour d'autres clients. J'ai fait le code suivant. Mais ca marche pas. Je ne sais pas comment paramétrer le CreateProcess et je suis meme pas sur que ca peut fonctionner ainsi
 Quelqu'un pourrait m'aider please !!!!!!!!!!!!

 Laetitia

if ((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
 {
      WSACleanup();
      perror(SOCKET_ERROR_MESSAGE);
      exit(1);
    }
    
    
 my_addr.sin_family = AF_INET; 
 my_addr.sin_port=htons(atoi(argv[1]));
    my_addr.sin_addr.s_addr = INADDR_ANY;
    memset(&(my_addr.sin_zero),'\0',INT64);
   
    /* bind to scc adress */
    if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
    {
      perror(BIND_ERROR_MESSAGE);
      exit(1);
    }
   
    /* set socket to listen */
    if (listen(sockfd,BACK_LOG) == -1)
    {
      perror(LISTEN_ERROR);
      exit(1);
    }
   
    sin_size=sizeof(struct sockaddr_in);
   
    /* tache moteur du serveur du scc */
    while(1)
    {
      new_fd=accept(sockfd,(struct sockaddr *)&bc_addr,&sin_size); 
      
      /* pour remplacer le fork(), mais je sais pas comment le paramétrer
      if( !CreateProcess( NULL, "SomeProcess", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
      {
        printf(CREATE_PROCESS_ERROR);
      }

      numbyte=recv(newSd,id_session,CHAR_LIMIT-1,NUL);
      id_session[strlen(id_session)]=NULL_CHAR;
      ....................
             
      shutdown(new_fd,2);
   closesocket(new_fd); 
      WSACleanup();
    }
   
    return 0;  
}


 

2 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
19 janv. 2007 à 15:48
Salut,

C'est pas une bonne idée d'essayer d'imiter la prog sous linux si tu es sous windows.

Regarde plutot du coté des threads (msdn CreateThread).
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
21 janv. 2007 à 21:59
salut,

pour les sockets windows :
http://www.sockets.com/winsock.htm

ShareVB
0
Rejoignez-nous