Forum Programmation.c Interface /sys pour un programme

Posté par  .
Étiquettes : aucune
2
24
mai
2011

Bonjour,

J'aimerai savoir s'il est possible pour un programme C de créer des fichiers d'interface en lecture ou écriture dans un système de fichier tmpfs, comme le fait le noyau dans le répertoire "/sys", pour pouvoir lire des variables d'un programme, ou piloter le programme.

Une autre solution existe mais un peu plus complexe à réaliser, c'est d'utiliser la mémoire partagée.

  • # Beej's Guide to Unix Interprocess Communication

    Posté par  (site web personnel) . Évalué à 5.

    http://beej.us/guide/bgipc/output/html/multipage/fifos.html

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # /sys n'est pas prévu pour çà...

    Posté par  (site web personnel) . Évalué à 1.

    .. et je ne connais pas d'équivalent en userspace pour ce que tu veux faire.

    Perso j'opterais pour la mémoire partagée.

    => Ton programme avec les variables auxquelles tu veux accéder en shared memory.
    => Un autre prog qui te permet de lire/ecrire ces variable et ainsi de "piloter" ton programme.

    • [^] # Re: /sys n'est pas prévu pour çà...

      Posté par  (site web personnel) . Évalué à 2.

      /sys n'est pas prévu pour çà...

      Il n’a jamais dit qu’il cherchait à utiliser /sys pour ça, juste qu’il aimerait faire quelque chose du même genre (dans son propre coin, indépendamment de /sys).

      .. et je ne connais pas d'équivalent en userspace pour ce que tu veux faire.

      Comme le suggère le commentaire-bookmark ci-dessus, des tubes nommés. Ou bien des sockets UNIX.

      Les tubes nommés ont l’avantage d’être simples à utiliser (côté C, on y lit et écrit comme dans un fichier classique ; côté shell, de simples redirections suffisent), en contrepartie ils sont unidirectionnels.

      Les sockets UNIX sont bidirectionnels (on peut envoyer une commande au programme et recevoir une réponse par le même canal), mais ne se manipulent pas tout-à-fait comme des fichiers classiques (côté C, il faut utiliser bind(2), listen(2), accept(2), etc. ; côté shell, il faut passer par des outils comme socat(1)).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.