![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| SUSE Vos questions sur la distribution Suse |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: mars 2008
Localisation: Toulouse
Âge: 22
Messages: 11
|
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 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2006
Localisation: toulouse
Messages: 1 474
|
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 (permalink) | |
|
Invité régulier
![]() Date d'inscription: mars 2008
Localisation: Toulouse
Âge: 22
Messages: 11
|
Citation:
* 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 (permalink) |
|
Invité régulier
![]() Date d'inscription: mars 2008
Localisation: Toulouse
Âge: 22
Messages: 11
|
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 (permalink) |
|
Membre éclairé
![]() Date d'inscription: juin 2002
Localisation: Lyon
Messages: 311
|
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ésolu rime souvent avec Merci ! |
|
|
|
|
![]() |
![]() |
||
comportement différent sous vista/cygwin et opensuse
|
||
| Outils de la discussion | |
|
|