IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SUSE Discussion :

comportement différent sous vista/cygwin et opensuse


Sujet :

SUSE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 11
    Par défaut comportement différent sous vista/cygwin et opensuse
    Salut,
    Ma question est simple : comment se fait-il qu'un programme ait un comportement différent sous cygwin que sous opensuse 10.3 ?

    Je m'explique : un pote a écrit un programme en C sous vista/cygwin qui fonctionne exactement comme on le souhaite. Nous devons cross-compiler ce programme pour l'exécuter sur un linux embarqué, mais d'abord nous voulons qu'il fonctionne sur opensuse, ça serait déjà bien... Mais ce n'est pas le cas.

    Ce programme est en gros un serveur fonctionnant en multithreading.

    est-ce le changement de pc qui a changé le comportement du programme, ou bien le changement de système d'exploitation ?

    Toma.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    c'est l'environnement (donc les couches soft basses) qui peuvent changer +ou- le comportement du programme par exemple
    /dev/random ou encore /proc/* etc... peuvent etre differents
    de plus cygwin n'est pas un unix mais seulement un shell unix et un environnement de base pour windows donc forcément assez elloigné d'un unix c'est comme comparer un volant identique sur une renault Turbo5 et un Man TGA, tu n'aurra pas du tout les même sensations... et le volant est pourtant le meme.... et pourtant il est toujours au bout de la colone de direction mais dans un cas tu as un environnement complet (voiture de sport et dans l'autre un camion)...ca braque pas pareil

    si le programme change beaucoup son comportement c'est qu'il est mal ecrit...enfin du moins....pas écrit pour être , à la fois portable & non-OS dépendant, est plus exact.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 11
    Par défaut
    Citation Envoyé par frp31 Voir le message
    c'est l'environnement (donc les couches soft basses) qui peuvent changer +ou- le comportement du programme par exemple
    /dev/random ou encore /proc/* etc... peuvent etre differents
    Quelles sont les différences à prendre en compte pour écrire un programme tel que le notre ? Y-a-t-il des différences dans :
    * La gestion des priorités entre les threads ?
    * La gestion d'un réseau udp ? (notre programme utilise un port udp pour la communication entre processus).

    On a l'impression que, sur le linux, les processus arrêtent d'écouter au port au bout d'un moment, et que les données envoyées sur ce port sont mis dans un tampon, qui se "vide" lorsque les processus sont relancés (on reçoit tout d'un coup).

    Ce comportement nous parait étrange...

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 11
    Par défaut
    Personne n'a donc pu m'aider

    Bon, je vais vous dire ce qui était différent entre windows et linux, et qui nous embêtait dans notre programme, ça pourra peut-être servir un jour à quelqu'un, qui sait...

    Donc voila : notre programme repose sur une structure multithread. Il semblerait qu'il existe un nombre maximum de processus joignables. Ce nombre est plus grand sous windows que sous linux, donc cette limite n'a pas été atteint lorsque le programme a été exécuté sous windows/cygwin. Cependant, pour Suse (et également Fedora, et pt être aussi les autres distrib, c'est à tester...), ce nombre maximum a été atteint, d'où le comportement aléatoire que j'ai décrit.

    Nous avons donc modifié notre programme en utilisant des processus non joignables, et c'était gagné !

    @+, Toma

  5. #5
    Membre émérite
    Avatar de matrix788
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 740
    Billets dans le blog
    2
    Par défaut
    en effet, la gestion du thread est différente de windows à unix, du au standard du language C :

    The _beginthread and _endthread calls are Microsoft specific extensions to
    the C standard; they respectively start and end a thread, performing
    Microsoft C runtime initialization and cleanup. The corresponding Cygwin
    primitives are called posix_create and posix_end.

    You may get lucky and get your code working by just substituting
    pthread_create for beginthread, and pthread_exit for endthread.

    source :
    http://cygwin.com/ml/cygwin/2002-10/msg00939.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regex SED / comportement différent sous Notepad++
    Par sebyo dans le forum Shell et commandes GNU
    Réponses: 22
    Dernier message: 05/12/2014, 12h21
  2. comportement différent sous l'IDE
    Par Négrier dans le forum Langage
    Réponses: 4
    Dernier message: 23/12/2010, 23h03
  3. Comportement de <tr> différent sous IE et FF
    Par tofito dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/07/2009, 20h39
  4. Fortran sous Vista : problèmes avec cygwin
    Par crow56 dans le forum Fortran
    Réponses: 3
    Dernier message: 18/07/2008, 13h33
  5. eval() comportement différent sous FF et IE
    Par hush dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2007, 00h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo