Partage
  • Partager sur Facebook
  • Partager sur Twitter

[sous Linux] Recherche fonctions pour récupérer des informations sur le systeme et l'utilisateur

Sujet résolu
9 mai 2007 à 16:29:43

Bonjour,

Ne sachant où poster ce topic (il concerne 2 categories) je l'ai également posté dans la partie Linux, je ne vois aucun inconvénient à ce qu'un des deux soit supprimer du moment que celui qui a le plus de chance d'obtenir de l'aide reste :-)

Je suis à la recherche de différentes fonctions en C sous linux qui me permettraient d'obtenir des informations sur le système et l'utilisateur.
j'ai déjà fait des recherches qui m'ont permis afficher l'uid/gid/euid mais je recherche d'autres infos :
l'username, le shell, la mémoire disponible, l'architecture, la distribution, la version du kernel, l'architecture, enfin toutes fonctions permettant d'obtenir des informations.

J'aurais besoin d'un petit coup de pouce car je ne trouve pas ces fonctions.

Merci d'avance si vous pouvez m'en indiquer n'en serait-ce qu'une seule .
  • Partager sur Facebook
  • Partager sur Twitter
9 mai 2007 à 16:40:39

Salut,

Je ne connais pas de fonctions toutes faites qui font ça (il en existe peut-être), mais tu peux récupérer la plupart de ces informations (et plein d'autres encore) soit dans des variables d'environnement, soit dans les (pseudo)fichiers situés dans le répertoire /proc.

Pêle-mêle :
- le nom de l'utilisateur : dans la variable d'environnement $USER
- le shell utilisé : dans la variable d'environnement $SHELL
- la mémoire disponible : dans le fichier /proc/meminfo
- des infos sur le processeur (c'est ce que tu veux dire quand tu parles d'architecture, je suppose) : dans le fichier /proc/cpuinfo

Pour la distribution, en revanche, je n'ai aucune idée...

Edit: j'oubliais : pour la version du kernel, il y a la fonction uname(), qui permet de récupérer les mêmes infos que celles affichées par la commande du même nom.
  • Partager sur Facebook
  • Partager sur Twitter
9 mai 2007 à 16:48:19

#include <iostream>
#include <cstdlib>

int main ( int, char**, char** context )
{
  char** c = context;
 
  while ( *c++ )
    std::cout << *c << std::endl;

  system("pause");
  return EXIT_SUCCESS;
}

Ca devrait être presque la même chose en C. Il me semble qu'on préfère utiliser get_env() maintenant. Sous mon système (Windows), ca renvoie le type de processeurs, le système, le nombre de processeurs, le path, etc... A voir sous linux.
  • Partager sur Facebook
  • Partager sur Twitter
9 mai 2007 à 17:40:11

@ NewbiZ : ce que tu présentes là fonctionne aussi sous Linux ;) En fait ce n'est qu'un moyen d'accéder aux variables d'environnement dont je parlais.

Les autres moyens étant la fonction getenv() et le recours à la variable globale environ.
  • Partager sur Facebook
  • Partager sur Twitter
9 mai 2007 à 21:57:26

"man proc" me parait bien.
  • Partager sur Facebook
  • Partager sur Twitter
C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
10 mai 2007 à 21:55:18

merci pour vos reponses j'ai trouvé ce qu'il me fallait.
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2022 à 19:23:42 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


23 février 2022 à 19:28:42

@FreddyFabrice Bonsoir, merci de ne pas déterrer d'ancien sujet résolu pour poster une nouvelle question. Merci de créer votre propre sujet.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter