Mon code est le suivant (code du programme serveur):
...
if ( !fork() ) // On est dans le processus fils
{
defaultchld(); // Initialisation de signaux
processid = getpid();
dialogue( socket_client ); // On lit et on écrit sur le socket
shutdown( socket_client , SHUT_RDWR ); // Fermeture du socket
client (en émission et réception)
exit( 0 );
}
else // On est dans le processus père ou il y a eu une erreur lors
du fork()
{
close( socket_client );
}
...
Voilà, l'autre jour j'ai eu un problème : je me connecte à partir de
mon PC sur une machine unix distante. Sur mon pc, j'ouvre un socket et
j'envoie sur celui-ci une commande, qui lorsqu'elle est reçue au
niveau du serveur, est exécutée. Depuis j'ai un peu modifié mon
programme pour arriver à celui ci-dessus (j'avais pas mis de "else").
En effet, la machine unix a planté, mais je ne sais toujours pas
pourquoi !
Ma question est donc la suivante : pour quelle(s) raison(s) la machine
unix a planté ? De plus, y a t'il un moyen de tester la fonction
fork() (et donc de savoir si le programme ci-dessus est correct et ne
fera planter à nouveau la machine unix...) ? Si oui lequel, parce que
là j'en peu plus et je vois pas comment faire pour savoir d'où vient
le bug.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Boyer
Philippe wrote:
Bonjour à tous,
Voilà, l'autre jour j'ai eu un problème : je me connecte à partir de mon PC sur une machine unix distante. Sur mon pc, j'ouvre un socket et j'envoie sur celui-ci une commande, qui lorsqu'elle est reçue au niveau du serveur, est exécutée. Depuis j'ai un peu modifié mon programme pour arriver à celui ci-dessus (j'avais pas mis de "else"). En effet, la machine unix a planté, mais je ne sais toujours pas pourquoi !
Ma question est donc la suivante : pour quelle(s) raison(s) la machine unix a planté ?
Heuh... Difficile à dire comme ça. Puisque tu as la maîtrise des sources, ne peux-tu pas le recompiler avec une option de débug, puis examiner le core avec ton débugger préféré.
Non ?
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Philippe wrote:
Bonjour à tous,
Voilà, l'autre jour j'ai eu un problème : je me connecte à partir de
mon PC sur une machine unix distante. Sur mon pc, j'ouvre un socket et
j'envoie sur celui-ci une commande, qui lorsqu'elle est reçue au
niveau du serveur, est exécutée. Depuis j'ai un peu modifié mon
programme pour arriver à celui ci-dessus (j'avais pas mis de "else").
En effet, la machine unix a planté, mais je ne sais toujours pas
pourquoi !
Ma question est donc la suivante : pour quelle(s) raison(s) la machine
unix a planté ?
Heuh... Difficile à dire comme ça.
Puisque tu as la maîtrise des sources, ne peux-tu pas le
recompiler avec une option de débug, puis examiner le core
avec ton débugger préféré.
Non ?
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
Voilà, l'autre jour j'ai eu un problème : je me connecte à partir de mon PC sur une machine unix distante. Sur mon pc, j'ouvre un socket et j'envoie sur celui-ci une commande, qui lorsqu'elle est reçue au niveau du serveur, est exécutée. Depuis j'ai un peu modifié mon programme pour arriver à celui ci-dessus (j'avais pas mis de "else"). En effet, la machine unix a planté, mais je ne sais toujours pas pourquoi !
Ma question est donc la suivante : pour quelle(s) raison(s) la machine unix a planté ?
Heuh... Difficile à dire comme ça. Puisque tu as la maîtrise des sources, ne peux-tu pas le recompiler avec une option de débug, puis examiner le core avec ton débugger préféré.
Non ?
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(