Question

Dupe sur stackoverflow par un de mes amis, ayant le même problème:

J'ai copié le code de ce tutoriel: http://www.thegeekstuff.com/2012/04/create-proc-files/

Et de fait, le module créé mon procfile.

J'ai été heureux de voir que j'ai gagné un procfile je pourrais echo "texte" > proc/name_of_procfile

Je peux aussi lire avec le chat!!

J'ai été idiot avec elle et ils ont maintenant un nombre important de valeurs dans mon procfile - chaque fois que je le chat il va par le biais de ces valeurs de manière séquentielle:

T1.Je me demande - comment puis-je supprimer les valeurs de la procfile?

AUSSI, plus tard, je vais essayer d'obtenir le comportement que chaque fois qu'un fichier lit mon procfile, il modifie la valeur de ce qu'il vient de lire dans le proc_file.

T2.Je sais que ce serait mise en œuvre dans mon "int read_info" la méthode, mais les pointeurs sur comment faire cela?

Était-ce utile?

La solution

T1.

Vous ne pouvez pas supprimer ces valeurs dans un sens normal d'une opération de suppression sur un système de fichiers.Vous pouvez echo quelque chose dans procfile si il est accessible en écriture.Cela dépend d'un module de comportement comment cette "entrée" les données sont traitées.Ça va être entreposés ou mis au rebut ou de quelque façon représentait en quelque sorte à l'interne, le module de décision.Pour être plus précis, la logique que vous avez mis dans le module définit le traitement.Le module à partir de cet exemple est très simple logique:il mémorise une chaîne de caractères dans la mémoire tampon interne lorsque le noyau appelle sa write_info fonction - en fait, il ne concaténer des données avec le contenu actuel.Ensuite, il peut renvoyer le contenu de cette mémoire tampon lorsque le noyau appelle sa read_info fonction.Donc, si vous ne:

echo "some text">/proc/yourprocfile
echo "another text">/proc/yourprocfile

Alors cat /proc/yourprocfile imprimez

some text
another text

sur l'écran.Pour résumer:le comportement complet de ces fichiers est module-defined.

T2.

Vous pouvez faire cela presque comme vous faites cela dans l'habitude C programme.Il y a deux différences majeures:

  • l'API accessible dans le mode noyau est différent.Certaines fonctions ont la même ou très similaire noms et fonctionnalités que leurs analogues dans la norme C bibliothèque.Les autres fonctions ont des noms différents mais toujours analogue à certains utilisateur-espace de fonctions.Et puis, certaines fonctions ne sont disponibles que dans l'espace du noyau.

  • tout ce que vous faites dans l'espace du noyau doit être plusieurs fois vérifié par vous et débogué on the sheet of paper comme un bug dans votre module peut causer du vidage du noyau au minimum (noyau s'arrête et puis vous devez appuyer sur reset bouton pour redémarrer votre système) et peut entraîner la corruption des données de vos systèmes de fichiers au pire.

Donc, je vous recommande de configurer le paquet VirtualBox;pour créer avec ce bel outil, une machine virtuelle;y installer le minimum de la version linux et de faire un bilan du disque virtuel après l'installation.Donc, si quelque chose va mal, vous pouvez toujours revenir tout dommage.Vous n'avez pas besoin d'installer tous vos outils de construction et source du noyau il - vous que le chargement et test/le débogage de vos modules ou des applications sur cette machine virtuelle.

Mais de toute façon, la zone que vous allez toucher, ou, pour être plus exact, déjà évoqué, est très intéressante.

Bonne chance

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top