Socket
tchsimons
Messages postés
207
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
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>
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
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
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
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).
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).
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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 ?
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.
pthread.h: No such file or directory
error:'pthread.h' does not name a type.