Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/06/2014, à 09:43

Loustak

Language c récupérer la distribution linux

Bonjour,
Pour des besoins particuliers dans mon programme je doit affiché la distribution linux utilisé Ubuntu, Debian etc..
Merci smile

(ps: je suis nouveau je me suis peut être planter dans les termes n'hésiter pas à me rectifier)

Hors ligne

#2 Le 30/06/2014, à 09:45

jplemoine

Re : Language c récupérer la distribution linux

lsb_release -a

Mais je ne sais pas si c'est du spécifique ou pas...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#3 Le 30/06/2014, à 09:49

pires57

Re : Language c récupérer la distribution linux

pourquoi utiliser le langage C pour cela? si c'est ton seul besoin, un simple script shell serait plus judicieux.
tu peut nous expliquer ce que tu cherche a faire?


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#4 Le 30/06/2014, à 10:05

Loustak

Re : Language c récupérer la distribution linux

En fait je cherche à créer un petit programme qui fonctionnerait sous Windows / Mac / linux, pour windows c'est ok, mais enfait j'aimerais n'avoir qu'un seul exécutable codé en C qui s'adapterais en fonction de l'OS, c'est possible.
Après le but de mon programme c'est juste d'optimiser un OS au maximum, sous windows j'avais codé ça avec Autoit mais malheureusement il faut wine pour linux et puis j'aime bien le C donc bon smile

Sinon pour mon problème j'ai déjà fait ça :

#elif defined (__linux)
#define OSTYPE "LINUX"
#include "linuxFunc"

Pour les 3 os, le code change bien en fonction de l'os, sauf que pour Linux il y a plusieurs distribution (et donc plusieurs technique diffèrentes d'optimisation) c'est pour ça que je voudrait "récupéreré" la distribution, si possible sans passer par le terminal merci smile

Hors ligne

#5 Le 30/06/2014, à 10:07

tiramiseb

Re : Language c récupérer la distribution linux

Salut,

jplemoine a écrit :
lsb_release -a

Mais je ne sais pas si c'est du spécifique ou pas...

Comme son nom l'indique, c'est une commande assez universelle... Donc c'est à mon avis une bonne idée.
http://fr.wikipedia.org/wiki/Linux_Standard_Base

pires57 a écrit :

pourquoi utiliser le langage C pour cela?

Peut-être qu'il a déjà des milliers de lignes de code en C et qu'il doit juste ajouter cette détection à son programme smile

Hors ligne

#6 Le 30/06/2014, à 10:33

Loustak

Re : Language c récupérer la distribution linux

En effet tout mon programme est en C maintenant smile
Sinon pour la commande comment récupérer la valeur retourner ? Il faut que je fasse un fichier .sh ?

Hors ligne

#7 Le 30/06/2014, à 10:40

tiramiseb

Re : Language c récupérer la distribution linux

Bah non, tu exécutes la commande avec un appel système et tu récupères sa sortie...

Par contre je ne suis pas très fort en C, je ne saurais pas te dire comment faire précisément...

Hors ligne

#8 Le 30/06/2014, à 11:46

claudius01

Re : Language c récupérer la distribution linux

Bonjour,

tiramiseb a écrit :

Bah non, tu exécutes la commande avec un appel système et tu récupères sa sortie...

C'est effectivement la solution au moyen de l'utilisation de popen à préférer à l'emploi de system.


Cordialement, A+
--
Claudius

Hors ligne

#9 Le 30/06/2014, à 14:35

Loustak

Re : Language c récupérer la distribution linux

Ok j'ai réussi, j'ai envoyer le résultat de la commande dans un fichier texte, ensuite je lis le fichier texte pour connaitre la valeur, merci smile

Hors ligne

#10 Le 30/06/2014, à 15:01

Loustak

Re : Language c récupérer la distribution linux

Je me heurt à un problème c'est que je ne peux lire le fichier que si la commande est stopper sinon elle garde le droit. Il n'y a pas moyen de lancer la commande dans un autre terminal ou de là "stopper" ? Merci smile

Hors ligne

#11 Le 30/06/2014, à 15:04

pires57

Re : Language c récupérer la distribution linux

montres ton code, quelle commande est en cours?


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#12 Le 30/06/2014, à 15:09

Loustak

Re : Language c récupérer la distribution linux

Donc c'est la commande lsb_release -a, elle se lance dans la même console que mon programme, pourquoi ?
Ensuite et ça je pense que c'est normal c'est que je ne peux pas lire le fichier out.txt car le programme n'est pas fermer...

        FILE *output = NULL;
        system("lsb_release -a > out.txt");
        output = fopen("out.txt" , "r");
        if (output != NULL)
        {
            printf("Impossible d'ouvrir le fichier de reception des commandes\n");
        }
        else
        {
            char distribution[60];
            fgets(distribution, 60, output);
            printf("%s\n",distribution);
            fclose(output);
        }

Hors ligne

#13 Le 30/06/2014, à 15:16

pires57

Re : Language c récupérer la distribution linux

tu inverses, la tu es en train de lui dire que si output prend la valeur NULL tu passes dans le ELSE
pour moi le code correct serais plutot :

        FILE *output = NULL;
        system("lsb_release -a > out.txt");
        output = fopen("out.txt" , "r");
        if (output != NULL)
        {
            char distribution[60];
            fgets(distribution, 60, output);
            printf("%s\n",distribution);
            fclose(output);
        }
        else
        {
            printf("Impossible d'ouvrir le fichier de reception des commandes\n");
        }

Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#14 Le 30/06/2014, à 15:18

Loustak

Re : Language c récupérer la distribution linux

Oula oui grosse bourde, merci smile

Hors ligne

#15 Le 30/06/2014, à 15:20

claudius01

Re : Language c récupérer la distribution linux

C'est bien de reécrire le popen avec en plus un fichier out.txt qui va trainer là où est lancé le programme ;-((

Hors ligne

#16 Le 30/06/2014, à 20:10

tiramiseb

Re : Language c récupérer la distribution linux

Ouais euh c'est un peu complètement idiot de passer par un fichier alors qu'avec popen tout se fait tout seul en direct...

Hors ligne