Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2011
    Messages : 9
    Points : 0
    Points
    0

    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
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 402
    Points : 13 711
    Points
    13 711

    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é de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2011
    Messages : 9
    Points : 0
    Points
    0

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •