|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 8 ![]() |
Bonjour,
Je suis étudiant et je dois créer un programme en C qui me permettrait d'écrire directement dans un secteur donné d'une disquette. J'ai vu qu'il y avait un moyen de le faire en assembleur via l'interruption 13H et je cherche quelles fonctions je pourrais utiliser pour le réaliser en C. On m'a conseillé d'utiliser les fonctions open lseek et write pour y parvenir. Mais je me pose plusieurs questions : Est-ce que je peux ouvrir directement la disquette en écriture avec la fonction open ? Et si c'est possible, comment faire pour choisir quelle tête utiliser, sur quel cylindre écrire si j'essaye d'écrire d'abord sur une clé usb ou sur un disque dur ? Merci de votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 611 ![]() |
Bonjour,
Pour faire court : c'est de la programmation système. Tes interrogations trouvent leur source dans le fait que ce que tu veux faire ne relève pas du langage C à proprement parler, mais du système d'exploitation. Autrement dit, ce n'est pas la norme C qui va définir une fonction permettant de lire un secteur d'une disquette quel que soit ton environnement de travail. À la place, il faut que tu trouves l'API idoine proposée par le système d'exploitation que tu utilises et l'exploiter. Si tu travailles sous Unix ou Linux, toutefois, ce travail est grandement simplifié car la majorité de tes périphériques de stockage te sont présentés comme des fichiers spéciaux. Tu peux donc ouvrir ces dits fichiers spéciaux avec les fonctions standard du C telles que fopen() ou autre. Donc, si tu disposes d'un lecteur de disquettes, tu peux essayer de lire /dev/fd0. Le contenu de ta disquette y sera présenté comme une suite continue de 1,44 Mio exactement. En écrivant par intervalles de 512 octets, tu accèdes à chaque de tes secteurs. C'est sympa parce qu'en copiant ce fichier vers un fichier ordinaire et vice-versa, tu crées une image de disquette et tu regénères une disquette à partir de cette image, respectivement. Et tout cela depuis la ligne de commande, sans logiciel dédié. C'est par merveilleux, tout cela ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 8 ![]() |
Merci de tes explications
J'ai fait un open("/dev/fd0", O_WRONLY) et tout fonctionne à merveille ! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com