Socket

tchsimons Messages postés 207 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjours à tous
dans mon serveur j'ai des erreurs que je ne comprend pas. j'ai eu à utiliser les foctions suivantes fork() et getppid()
j'ai eu des erreurs suivante :
main.c undefined reference to 'fork'
main.c undefined reference to 'getppid'
ai je oublié un include ou quelque chose d'autre? ( je programme en c sous windows xp) voici l'ensemble des includes:
#include <winsock2.h>
# include <sys/types.h>
# include <string.h>
# include <unistd.h>
# include <stdio.h>
# include <time.h>
# include <errno.h>
# include <string.h>
# include <stdlib.h>

9 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Pour getpid, utilise plutôt _getpid et inclue process.h
Et à la place de fork, utilise un thread via CreateThread : https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread?redirectedfrom=MSDN

Cdlt
0
tchsimons Messages postés 207 Statut Membre 14
 
cette foi :on marque
main.c undefined reference to 'thread'
main.c undefined reference to 'getppid'
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Lorsque tu utilises une fonction, celle-ci doit être préalablement déclarée. C'est le rôle des .h.
Donc lorsque tu utilises une fonction il faut trouver le bon .h qui la contient.
Si la documentation est bien faite (et c'est généralement le cas) pour chaque fonction il est préciser le ou les .h à utiliser.
En revanche, je ne suis pas tout à fait d'accord avec fiddy, thread et fork, ce n'est pas la même chose, si le programme est fait avec fork, ça peut faire beaucoup de travail de passer à un thread. Sauf erreur, fork cré une copie du processus, alors que thread exécute une fonction de manière non séquentielle au programme principale (la plupart du temps).
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
thread et fork, ce n'est pas la même chose
Oui, je sais bien. Mais pas de fork sous win32.

Windows et Linux ne gèrent pas les processus de la même façon.
Tu as toujours : https://docs.microsoft.com/en-us/windows/win32/procthread/creating-processes?redirectedfrom=MSDN pour créer un processus, mais c'est pour lancer un autre programme et un non une duplication de processus.

Le noyau de NT supporte le fork, mais pas Win32. Sur Windows, on préfère l'utilisation de thread que de fork.

Cdlt
0
tchsimons Messages postés 207 Statut Membre 14
 
ta une proposition Char Snipeur?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
ma proposition, c'est que tu te débrouille un peu seul. Enfin, je t'explique comment faire.
Par exemple, man fork dit que la fonction est dans unistd.h ( http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/fork.2.html )
Donc, tu inclus ce fichier. Si il n'y a pas fork, tu peux toujours faire une recherche dans tout tes fichiers .h.
Vois tu le principe ?
0
tchsimons Messages postés 207 Statut Membre 14
 
je suis sous windows.j'ai pas trouvé de fork apres ce travail
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Mon message me paraît pourtant clair :
Le noyau de NT supporte le fork, mais pas Win32. Sur Windows, on préfère l'utilisation de thread que de fork.

Cdlt
0
tchsimons Messages postés 207 Statut Membre 14
 
la bibiotheque de thread est manquante dans code block. j'ai ce lien pour la telecharger. http://sourceware.org/pthreads-win32/ sur la page web qui s'affiche j'ai choisis le lien ftp://sourceware.org/pub/pthreads-win32/dll-latest et j'ai telechargé les fichiers qui s'y trouvent.ceux qui sont dans le dossier lib , je l'ai copier dans le dossier lib de mon IDE ceux qui sont danjs include , j'ai dans le dossier include de ide.Est ce la methode pour installer la bibiotheque? Car apres ce travail rien ne fonctionne toujours pas. voila les deux premieres erreursn affichées:
pthread.h: No such file or directory
error:'pthread.h' does not name a type.
0
tchsimons Messages postés 207 Statut Membre 14
 
AIdez moi SVP j'arive pas à faire fonctionner pthread.h dans code::block sous windows.j'ai toujours le erreurs ci dessus.
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Ton installation semble bonne.
As tu pthread.h dans le dossier include ? si oui, rajoute le chemin de l'include à ton compilateur, si non, met le.
0