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

GCC Discussion :

Eclipse CDT et MinGW /Cygwin


Sujet :

GCC

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut Eclipse CDT et MinGW /Cygwin
    Bonjour

    J'ai suivi le tuto :
    http://laurent-barbareau.developpez....ls/EclipseCDT/

    mais MinGW ou Cygwin ont des versions différentes aujourd'hui et résultats je ne sais pas trop comment les configurer. Pour l'instant j'ai juste essayer MinGW.
    Mais j'ai quelques bibilothèques équivalentes à linux mais pas tout je pourrais tout installer (sauf ce qui est relatif à ada et fortran) mais ça peut être long et peut-etre inutile de tout installer. de plus on ne peut pas cocher plusieurs à la fois faut faire un par un et y'en a un bon paquet.

    Si y'en a qui connaisse qui peuvent m'aider pour bien configurer MinGW ou /et Cygwin (sont il obligatoire les deux d'ailleurs ? je ne pense pas )car pour l'instant je passe par une machine virtuelle linux pour coder et c'est un peu long à charger

    Merci à vous

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Je ne comprend pas trop MinGW c'est un compilateur pour Windows.
    Cygwin est une collection de logiciel libre (gcc inclut ?) fait pour tourner sous Windows.

    sont il obligatoire les deux d'ailleurs
    Non tu peux utiliser que MinGW.
    En général de je que j'ai compris Cygwin sert en général pour utiliser des Makefiles.

    Après je n'utilise pas eclipse donc je ne peut pas d'aider pour sa configuration.
    Mais je que je peux te conseiller c'est d'utiliser code::block plus adapté pour faire du C ou C++.

  3. #3
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Citation Envoyé par nouilletonne Voir le message
    [...]
    Si y'en a qui connaisse qui peuvent m'aider pour bien configurer MinGW ou /et Cygwin (sont il obligatoire les deux d'ailleurs ? je ne pense pas )car pour l'instant je passe par une machine virtuelle linux pour coder et c'est un peu long à charger

    Merci à vous
    Bonjour,
    MingW → en gros gcc adapté à l'environnement win32 (et/ou win64). Il produit du code natif en utilisant la «libc» windows MSVCRT uniquement et l'API windows en général, aucune fonction POSIX n'est utilisable. Un environnement minimal à la shell est installable → MSYS.
    Cygwin → environnement complet émulant une surcouche POSIX (cygwin1.dll). Produit un exécutable natif avec la libc cygwin, la surcouche POSIX est utilisable. Tous les exécutables doivent fournir cygwin1.dll pour fonctionner. L'environnement proposé par cygwin peut être très complet → bash, tous les tools unix, serveur X, …

    Pour l'aide tu as la page eclipse qui détaille l'installation → Windows Install

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    donc apriori cygwin est plus approprié bon avoir une bonne "émulation" de l'environnement unix/linux
    par exemple appelé des biblothèques du genre :
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>
    #include <sys/sem.h>
    ou
    #include<pthread.h>

  5. #5
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Comme cygwin émule un environnement posix il est beaucoup plus simple porter les applications unix avec cygwin mais tu dois redistribuer le runtime et je ne sais pas s'il est aisé de se servir de bibliothèques tierces prévu pour windows. Je ne pense pas qu'il soit simple de mélanger la libc de cygwin avec la msvcrt.
    Au contraire de mingw qui est un port de gcc et de quelques outils unix vers windows.

    Par exemple, mais c'est à vérifier, si tu utilises Gtk+ avec mingw il te faudra avoir le binaire de la bibliothèque compilé avec mingw ou visual studio. Cette version de Gtk+ utilisera une version native des fonctions pour le graphisme.
    En revanche avec cygwin il sera plus simple (je pense) d'utiliser une version Gtk+ utilisant X, et d'installer le serveur X proposé par cygwin pour faire tourner l'application.

    Renseigne-toi bien sur les différents sites qui décrivent les différences entre les deux.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    j'avoue qu'en tant débutant eclipse (belle usine à gaz ! )

    certaines termes utilisés par certains me sont totalement inconnus :
    msvcrt
    Gtk+
    "version native des fonctions pour le graphisme."
    " redistribuer le runtime"
    "avoir le binaire de la bibliothèque compilé avec mingw ou visual studio"
    "Au contraire de mingw qui est un port de gcc et de quelques outils unix"
    "se servir de bibliothèques tierces prévu pour windows"
    "d'utiliser une version Gtk+ utilisant X, et d'installer le serveur X proposé par cygwin"

    bref il me semble qu'une combinaisaon mingw et cygwin est préférable pour avoir la normalisation POSIX avec cygwin et mingw pour la compilation gcc et les outils unix (étrange que cygwin ne proposerait pas)

    je risque de me faire "engueuler" n"ayant pas encore bien été voir les sites pour les doc mingw et cygwin mais justement les deux proposant une listes vastes de bliblio à importés dans les dernières versions j'aimerais savoir soit j'importe tout et ça peut être long et allourdir éclipse pour rien mais pourquoi pas soit j'importe que ce qui m'ait nécéssaire pour les biblios /sys ou autres d'unix mais là comment bien choisir car c'est pour moi mal expliqué en tant que débutant ?

    voilà c'est un compliqué peut-être comme explication et questionnement merci d'être tolérant sur mon coté debutant en eclipse et c auquel j'ai l"habitude pour le java mais ça c'est normal il est fait pour ça à la base

  7. #7
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut MinGW / MSYS
    Je développe régulièrement en C sous Windows avec MinGW.
    En premier lieu, je préfère utiliser Code::Blocks, riche en fonctionnalités mais plus léger qu'Eclipse et avec une gestion de projets séparés beaucoup plus simple à gérer ! C'est un choix personnel, pas un jugement de valeur sur Eclipse qui est un outil très complet, hyper puissant mais plus lourd, que je réserve pour ma part à Java ...
    Ensuite, tu peux télécharger Code::Blocks avec une version de MinGW liée, ce qui est super pratique !
    A noter qu'un logiciel développé avec Cygwin (et non MinGW) ne sera pas un "vrai" logiciel Windows et devra être redistribué avec sa couche virtuelle Cygwin, ce qui est nettement plus lourd.
    Mais pour le developpement tu peux utiliser l'environnement MSYS (qui utilise Cygwin mais peut compiler pour MinGW) afin de retrouver les commandes familières et les outils de linux permettant de compiler facilement pour MinGW des bibliothèques GNU avec le couple configure/make.
    Enfin, je n'utilise plus la version originale de MinGW depuis 2 ans, mais son fork Mingw-w64 dont l'API est plus complète et qui propose une version 32 bits et une version 64 bits ...

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    je vais utiliser mingwin64 vu que je suis en 64bits (win 7 pro 64)

    mais après je veux bien être guidé car je suis un gros neuneu sur eclipse pour l'instant
    je veux juste pour le moment avoir accès aux include sem shm et autres threads

    pour l'instant cygwin installe les packages je laisse tourner...(j'aurais peut etre du prendre un autre mirror tant pis je laisse tourner )

    cdt,

    nouilletonne

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Bon je suis totalement perdu énervé
    j'ai voulu installé toutes les extensions car ce que propose mingw les basiques ne faisait fonctionner que stdio.h et peut-être d'autres basiques mais avec toutes les extensions impossible de faire d'include plus complexe comme sys/sem.h sys/shm.h sys/threads.h

    donc énervé j'ai viré mingw mingw64 cygwin et même cdt viré les dossiers j'ai passé un ccleaner sur la base de registre viré du PATH de windows mingw mingw64 et cygwin pour repartir au propre !

    mon problème que je suis sous win 7 64 donc logiquement en fait je dois intaller mingw64 non ?
    pour cygwin je pige rien il s'installe et me donne juste un prompt shell pour lancer un programme et même quand je me met dans le repertoire d'eclipse cdt : ./eclipse ça fonctionne pas !
    pareil pour mingw64 je pige pas il s'installe mais propose aucun package et rien de plus. y'a juste des programmes de plus dans les programmmes windows. je ne vois pas quel appli dans bin je dois lancer pour voir si je peux en mettre d'autre.
    biensur j'installe mingw mingw64 ou cygwin à la racine du c comme pour eclipse.

    Ngork:
    "Mais pour le developpement tu peux utiliser l'environnement MSYS (qui utilise Cygwin mais peut compiler pour MinGW) afin de retrouver les commandes familières et les outils de linux permettant de compiler facilement pour MinGW des bibliothèques GNU avec le couple configure/make."
    => ça veut dire que je dois installer cygwin pour MSYS et que mingw saura compiler les deux ? pas bien compris (déjà que je sais pas trop ce que veut dire l'environnement MSYS ?

    voilà désolé pour mon ignorance je commence juste un peu à desespérer d'avoir un cdt sous windows avec les bibliotheques unix/linux !
    sur http://laurent-barbareau.developpez....ls/EclipseCDT/
    avec les nouvelles versions de mingw ou mingw64 et cygwin l'installe ne se passe pas pareil. je finis par chercher à adapter son tutos avec les nouvelles versions et je finis par faire par ignorance n'importe quoi.

    merci de votre aide sur les bonnes étapes à suivre.

  10. #10
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut Complications en vue ...
    32/64bits

    Ce n'est pas parce que tu es es sur un système hôte 64bits que tu es obligé de compiler en 64bits ou même d'avoir un compilateur 64bits.
    Ce qui compte, ce sont les systèmes cibles : avec un logiciel compilé en 64bits, seuls les possesseurs d'un système 64bits pourront le faire tourner, alors que si tu compiles en 32bits, le logiciel pourra tourner aussi bien sur un système 32bits que 64bits !
    Donc, sauf besoin spécifique, je te conseille d'installer MinGW en version 32bits.

    MSYS

    MSYS est une collection d'outils - compilés avec Cywin - qui te permet sous Windows de lancer une console de commande de type Unix, où tu retrouves plusieurs des outils et la syntaxe Unix.
    Avec ce mini-système, que tu peux lier au compilateur MinGW ou à un autre, tu as par exemple la possibilité de compiler des bibliothèques GNU comme sous Linux avec le couple configure/make.
    C'est utile, mais pas forcément nécessaire pour tes premiers logiciels ... voire pas du tout si tu utilises exclusivement un IDE comme Eclipse ou Code::Blocks et que tu n'utilises que des bibliothèques pré-compilées !


    Environnement de développement

    Es-tu contraint d'utiliser Eclipse ou est-ce un choix de ta part ?
    Si c'est un choix, sur quoi repose-t-il ?
    En effet, la configuration et l'utilisation d'Eclipse pour développer en C/C++ n'est pas si simple, alors qu'il existe de nombreux autres IDE, plus faciles à mettre en oeuvre par un débutant, comme Code::Blocks ...


    Cygwin / MinGW

    Tu n'as pas besoin d'installer les deux, et même ce n'est pas conseillé car dans tes variables d'environnement il te faudra définir l'un ou l'autre mais pas les deux ensemble !
    Par exemple, si tu veux installer la collection de MinGW-w64, tu peux simplement télécharger sur SourceForge la dernière version de l'installateur, puis tu lances l'exécutable et tu suis les instructions.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    merci pour ta réponse très explicite
    et donc

    mais après avoir installé tous les packages de mingw32 je n'ai pas pu faire appel à des includes tels que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <unistd.h>/* fork(), pipe(), read(), write() et close() */
    #include <string.h>/* strlen() */
    #include <math.h>/* fx math*/
    #include <ctype.h>
    #include <sys/wait.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>
    #include <sys/sem.h>
    #include <signal.h>
    #include <sys/signal.h>
    #include <sys/stat.h>
    #include <sys/msg.h>
    #include <fcntl.h>
    #include <inttypes.h>
    #include <time.h>
    au mieux j'ai eu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <stdio.h>/* printf() */
    #include <stdlib.h>
    j'ai peut-être fait mal fait la config d'eclipse pour que cela fonctionne mais je me suis dis que je suis peut-être obligé d'avoir les deux cygwin et mingw mais comment faire pour que les deux fonctionnent ensemble de manière stable si evidemment c'est cela qui me manque

    en tout cas j'éprouve de grande difficultés à avoir un IDE eclipse identique à celui que je fais fonctionner dans une VM fédora. Et sinon je suis obligé pour l'instant de bosser sur eclipse pour mes cours le prof ne faisant que ces démos sur éclipse.

  12. #12
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut Donc ... Eclipse !
    OK, tu es donc étudiant et contraint d'utiliser Eclipse pour reproduire fidèlement les démonstrations de ton prof, c'est bien ça ?

    Normalement, MinGW doit être installé dans C:\MinGW, c'est bien ton cas ?
    Puis, il y a des sous-répertoires, notamment, bin, include et lib, c'est bon ?
    Dans les variables d'environnement de ton système, tu dois ajouter à la variable PATH le chemin des exécutables de MinGW, soit C:\MinGW\bin ...
    Enfin, cette fois dans Eclipse tu dois ajouter aux propriétés de ton projet le chemin des fichiers d'entête (C:\MinGW\include) et des bibliothèques (C:\MinGW\lib) afin qu'Eclipse puisse les trouver !

    Si tu as bien fait tout ça, il n'y a pas de raison que ton programme ne compile pas ...

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    (re suis en plein révision )
    J'ai bien installé
    - dans C:\MinGW
    - variable PATH le chemin des exécutables de MinGW, soit C:\MinGW\bin ..(avant je mettais juste C:\MinGW)
    - dans Eclipse j'ai bien ajouté aux propriétés de mes projet le chemin des fichiers d'entête (C:\MinGW\include) et des bibliothèques (C:\MinGW\lib) =>
    par contre là quand je crée un projet il me créé déjà ces répertoires automatiquement mais avec : C:\MinGW\mingw32\include et C:\MinGW\mingw32\lib

    et avec ou sans le rajout dans include et librairies, il reconnait certaines librairies mais pas celle qui auraient des chemins du type "sys/..." par exemple sys/wait.h
    là il bloque

  14. #14
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut POSIX -> CYGWIN
    OK !
    Les fonctions et macros déclarées dans sys/wait.h sont des fonctions et macros de la norme POSIX, or MinGW ne respecte pas la norme POSIX puisqu'il produit du code natif Win32 !
    Donc, si tu as absolument besoin de fonctions ou de macros POSIX dans tes programmes, il te faut installer la suite logicielle CYGWIN qui, ainsi que cela a déjà été dit, te procure une couche POSIX pour faire tourner des programmes POSIX sur un système Windows, ce qui n'est pas possible avec MinGW.

    Et il te faut absolument choisir : CYGWIN ou MinGW, pas les deux, notamment parce qu'il y aura confusion dans la déclaration de ton PATH, les deux systèmes ayant de nombreux exécutables portant le même nom, ou alors il faut que tu changes ton PATH à chaque fois que tu changes de compilateur ...

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Bonsoir
    je up ce sujet
    cygwin fonctionne correctement j'avais juste oublié que je l'avais télécharger sur win 64 donc cygwin64 et j'ai donc mal mis à l'origine le chemin dans le path : cygwin au lieu de cygwin64 bref...

    - par contre mes progs ne fonctionnent pas et j'ai une erreur dans la console d' eclipse si je lance un programme qui normalement se lance via un autre prog avec exec de la part de cygwin du type :

    0 [main] redacteur 2524 cygwin_exception::open_stackdumpfile: Dumping stack trace to redacteur.exe.stackdump

    comment l’interpréter ?

    - de plus mon prog principal synchro qui doit lancer sur une mémoire partagée 2 prog redacteur et lecteur voici le code de synchro :
    me renvoie tout le temp :

    Shmat failed, erreur alloc memoire or je n'ai pas ce problème sur la VM (virtual machine sous fedora ) que j'utilise pour le même code

    pareil comment l’interpréter ? windows ne repère pas ou n'assigne pas mes clés défine aux processus.
    J'ai tenté dans le code ici de mettre en IPC PRIVATE mais toujours rien ? ou alors ça vient de l'attachment avec shmat ? mais pour quoi ?

    j'ai aussi des alertes
    Multiple markers at this line
    - unknown escape
    sequence: '\D'
    - unknown escape
    sequence: '\l'
    - unknown escape
    sequence: '\w'
    je comprend mais comment mettre le chemin alors sur des fichiers windows avec un simple '/' ?

    merci à vous de votre aide
    (il est vrai que le deuxième sujet est plus un sujet pour le forum en C mais peut-être que cygwin là aussi est une explication par rapport aux clés ou au chemin à mettre dans le code )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
     
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>
    #include <sys/sem.h>
     
    #define CLE 7
    #define CLES 7
     
    int main()
    {
    int shmid, semid, i;
    char *mem=0;
    int status, rc;
    struct shmid_ds shmid_struct;
     
    pid_t lecteur, redacteur;
     
     
     
    //shmid=shmget((key_t)CLE,1000,0750 |IPC_CREAT | IPC_EXCL);
    shmid = shmget((key_t) CLE, 1000, 0750 | IPC_CREAT | IPC_PRIVATE);
     
     
    mem=shmat(shmid,mem,0);
    if(mem == (char*) -1) {
    printf("\nShmat failed, erreur alloc memoire \n");
    return(0);
    }
     
     
    *mem= 0;
    *(mem+ 4) = 0;
     
     
    semid= semget(CLES, 2, IPC_CREAT|IPC_EXCL|0600);
     
    semctl(semid, 0, SETVAL, 1);
    semctl(semid, 1, SETVAL, 1);
     
     
    	printf("begin 'on'synchro_sources:");
    	printf("valeur shmid %d\n", shmid);
    	printf("valeur semid %d\n", semid);
    	printf("valeur mem %d\n", *mem);
    	printf("valeur memoire %d\n\n", *(mem + 4));
     
     
     
    i = 0;
     for (i=0;i<3;i++) {
          lecteur= fork();
          if (lecteur== 0) {
             execl("C:\workspace\workspace_c\lecteur\Debug\lecteur.exe", "C:\workspace\workspace_c\lecteur\Debug\lecteur.exe",NULL);
          }
          else{
               redacteur= fork();
               if (redacteur== 0)
                  execl("C:\workspace\workspace_c\redacteur\Debug\redacteur.exe", "C:\workspace\workspace_c\redacteur\Debug\redacteur.exe"(, NULL);
          }
      }
    wait(&status);
     
        rc = shmctl(shmid, IPC_RMID, &shmid_struct);
        if (rc==-1)
          {
            printf("main: shmctl() failed\n");
            return -1;
          }
     
        rc = shmdt(mem);
        if (rc==-1)
          {
            printf("main: shmdt() failed\n");
            return -1;
          }
     
          rc = semctl( semid, 2, IPC_RMID );
        if (rc==-1)
          {
            printf("main: semctl() remove id failed\n");
            return -1;
          }
     
    return 0;
     }

  16. #16
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut Au cas où ...
    Depuis le temps, tu as dû avoir une réponse ailleurs pour ton dernier message, mais au cas où quelqu'un passerait par là et se poserait la question, l'antislash \ permet d'échapper le caractère qui le suit, c'est-à-dire de générer un caractère spécial, comme un saut de ligne ou une tabulation, et ainsi la chaîne "\r" sera interprétée comme un retour chariot.
    Pour pouvoir générer le caractère antislash \ dans une chaîne, il faut donc l'échapper lui-même : \ devient \\
    Par exemple, ta chaîne "C:\workspace\workspace_c\redacteur\Debug\redacteur.exe" doit s'écrire : "C:\\workspace\\workspace_c\\redacteur\\Debug\\redacteur.exe"

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    oui j'ai trouvé seul par évidence sur l'échappement des \ par un échappement \ par \
    mais faudrait que je replonge dans ce vieux code

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

Discussions similaires

  1. [Eclipse + CDT + MinGW] Problème de compilation
    Par liberio dans le forum Eclipse C & C++
    Réponses: 2
    Dernier message: 03/12/2008, 02h38
  2. Message d'erreur gdb MinGW et eclipse CDT
    Par elraton dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 10/07/2008, 20h00
  3. [eclipse+cdt+cygwin] include de librairie
    Par grodwar dans le forum Eclipse C & C++
    Réponses: 3
    Dernier message: 21/08/2007, 19h26
  4. [C] Eclipse, CDT, MinGW, processus : erreurs et avertissements
    Par 84mickael dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 05/10/2006, 01h47

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