Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Bibliothèques, systèmes et outils
Bibliothèques, systèmes et outils Forum d'entraide sur les bibliothèques, la programmation système et les outils en C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/02/2012, 14h12   #1
Naogarlik
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 8
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.
Naogarlik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 14h15   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : septembre 2007
Messages : 4 611
Points : 11 074
Points : 11 074
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 ?
Obsidian est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 10h56   #3
Naogarlik
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 0
Points : 0
Merci de tes explications
J'ai fait un open("/dev/fd0", O_WRONLY) et tout fonctionne à merveille !
Naogarlik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h45.


 
 
 
 
Partenaires

Hébergement Web