IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques, systèmes et outils C Discussion :

Ecrire directement sur une disquette


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Invité
    Invité(e)
    Par défaut Ecrire directement sur une disquette
    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.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    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 ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de tes explications
    J'ai fait un open("/dev/fd0", O_WRONLY) et tout fonctionne à merveille !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une version de Linux qui tient sur une disquette
    Par jack_1981 dans le forum Distributions
    Réponses: 7
    Dernier message: 16/12/2005, 10h52
  2. Fichier IMG à graver sur une disquette pour windows
    Par jean christophe dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 14/04/2005, 15h41
  3. Réponses: 2
    Dernier message: 19/03/2005, 23h09
  4. Ecrire directement avec une autre langue???
    Par touhami dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 21/02/2005, 21h57
  5. Set serial Number sur une disquette
    Par Cpet dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/12/2004, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo