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

C Discussion :

Appels système GUI Linux/Xubuntu


Sujet :

C

  1. #1
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut Appels système GUI Linux/Xubuntu
    Bonjour,

    [Je rédige ce post dans la section C, car elle aborde généralement des sujets relatifs au bas-niveau, mais il pourrait très bien ce trouver ailleurs: je ne cherche aucune solution spécifique au C]

    Dans un but purement pédagogique, je souhaiterais pouvoir afficher une fenêtre basique sans l'aide d'une bibliothèque, seulement, je ne sais pas vraiment comment m'y prendre. (j'ai d'ailleurs tenté de trouver des articles avec les mot-clés gui system call, mais rien de bien satisfaisant)

    J'aurais donc quelques questions:

    1. Existe-t-il des moyens d'utiliser les appels système de l'OS ?
    2. Faut-il obligatoirement passer par de l'assembleur, ou l'utilisation d'un langage bas-niveau serait envisageable ?
    3. Auriez-vous des sources à me conseiller pour les exploiter ?


    EDIT: Ces tests seront effectués sur ma machine, je travaille donc sur la version 14.04 de Linux/Xubuntu. (64 bits)


    Je vous remercie d'avance pour votre réponse,

    Cordialement,

    Songbird.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour commencer, quel OS? La réponse est complètement différente entre Windows et Linux, vu que sous Windows l'OS expose directement des fonctions pour ça (qu'on pourrait alors qualifier d'appels système) et sous Linux un serveur X est présent.

    Note: Le titre de la discussion été modifié et n'incluait pas cette précision à l'origine.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    Salut,

    Merci pour ta réponse.


    Pour commencer, quel OS?
    N'importe quelle distribution Linux. (à moins qu'il y ait des exceptions, dans ce cas-là, faisons abstraction de celles-ci)
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Alors, sous Linux, entre les programmes ordinaires et les drivers d'écran, il y a le Serveur X. Ce qui donne deux points d'entrée pour accéder à l'écran sans utiliser de bibliothèque graphique:
    1. Se connecter manuellement au serveur X avec des sockets et envoyer les requêtes voulues selon le protocole X
    2. Ou bien appeler directement les pilotes graphiques de la même manière que le serveur X le fait. Regarder les sources du serveur X (les deux serveur X les plus connus étant X.Org et XFree86) sera probablement instructif.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    1. Se connecter manuellement au serveur X avec des sockets et envoyer les requêtes voulues selon le protocole X
    2. Ou bien appeler directement les pilotes graphiques de la même manière que le serveur X le fait. Regarder les sources du serveur X (les deux serveur X les plus connus étant X.Org et XFree86) sera probablement instructif.
    D'accord, merci pour le wiki, je vais aller jeter un œil.

    Aurais-tu une "préférence" entre ces deux façons de faire ? Envoyer des requêtes au serveur par un protocole bien défini serait-il moins casse-tête que d'utiliser les pilotes ?
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À mon avis, la méthode 1 est probablement la plus portable vers divers systèmes Unixoïdes. De plus, il est possible que le serveur X "ouvre" les pilotes en mode exclusif.

    Je ne connais pas assez Linux pour avoir des certitudes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    À mon avis, la méthode 1 est probablement la plus portable vers divers systèmes Unixoïdes. De plus, il est possible que le serveur X "ouvre" les pilotes en mode exclusif.
    Je pense aussi, généralement j'aime pas trop titiller les drivers, c'est de la sale bête.


    Je ne connais pas assez Linux pour avoir des certitudes.
    Pas de soucis, je vais continuer à chercher dans mon coin, jeter un oeil à la page du wiki et aux sources de X.org.

    Merci pour ton aide, bonne journée à toi !
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  8. #8
    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
    Bonjour,

    Le kernel de l'OS n'a pas pour vocation de mettre à disposition de l'utilisateur un système de fenêtrage. Pour cela il y a des drivers (framebuffer) et tout une pile d'outils qui se greffent dessus comme un serveur X ou les futurs (?) Wayland/Mir, les systèmes de fenêtrage Gtk/Qt/Enlghtenment/Fvwm2/…, les session mangers Gnome/KDE/XFCE/…

    En fait tout dépend d'où tu essayes (en Linux) d'afficher quelque chose. Si tu as déjà un X de lancé tu peux utiliser X, si tu as ce qu'il faut d'installé tu peux aussi utiliser les interfaces de plus haut niveau comme Gtk, etc ...

    Si tu veux vraiment aller bas, alors essaye le framebuffer à partir d'une console sans lancer aucun serveur X ni tout ce qui suit. Mais dans tous les cas de figures tu vas utiliser des «bibliothèques».

  9. #9
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    Salut,
    Si tu veux vraiment aller bas, alors essaye le framebuffer à partir d'une console sans lancer aucun serveur X ni tout ce qui suit. Mais dans tous les cas de figures tu vas utiliser des «bibliothèques».
    Oui je me doute bien que, passer un certain niveau, il y aura toujours des petites interfaces pour utiliser des outils. Mais je pense m'arrêter auprès du serveur X, n'oublions pas que ce n'est que par curiosité, je ne compte développer/encapsuler aucun outil graphique.

    Merci pour ta réponse, bonne journée.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/12/2006, 20h59
  2. appel système en c sous linux
    Par momoh dans le forum POSIX
    Réponses: 5
    Dernier message: 03/12/2006, 18h34
  3. Réponses: 3
    Dernier message: 20/06/2006, 07h06
  4. [UBUNTU] Ajout nouvel appel système ?
    Par [Margot] dans le forum Ubuntu
    Réponses: 5
    Dernier message: 11/05/2006, 14h11
  5. appel système opendir dans thread
    Par madimane dans le forum POSIX
    Réponses: 2
    Dernier message: 14/04/2006, 05h39

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