Derniers journaux de aspyrine :
- [29/01@17:17] Hyper Threading et noyau 2.4
- [26/12@15:45] Une carte graphique pour nowel
- [28/11@07:47] Debian unstable ??
- [22/08@12:46] Quel hébergement pour des projets libres ?
Journal : Savoir si un CD est présent dans le lecteur
Posté par Olivier Meunier (page perso, ) le 06 mars 2004Connais tu donc un moyen pour savoir si un DVD est présent dans le lecteur ?
Un truc en sh serait l'idéal.
Merci grand journal :)
> Lire le journal (22 commentaires, moyenne: 1,4).
Re: Savoir si un CD est présent dans le lecteur
mount /dev/cdrom.
Si ca marche, il y a un CD, sinon, il n'y en a pas.
Sur ce je vais prendre l'air -->[]
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par gawal () le 06/03/2004 à 23:00. (lien). Évalué à 2.Pas mieux : more /dev/cdrom
Si il n'y en a pas : No medium found. Si tu veux le savoir d'un programme, essaie d'acceder à ce fichier /dev/cdrom.-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Yaz () le 06/03/2004 à 23:09. (lien). Évalué à 2.Je pense que la question était plutot de détecter s'il s'agissait d'un DVD, et non pas d'un CD. Non ?
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Toto () le 06/03/2004 à 23:16. (lien). Évalué à 2.Dans ce cas la, il suffit de faire un df -h | grep /dev/cdrom. Si ca dépasse la capacité d'un CD, c'est un DVD.
allez hop, on retourne dehors, il faisait si bon... -->[]-
[^]Re: Savoir si un CD est présent dans le lecteur
-
-
-
Re: Savoir si un CD est présent dans le lecteur
http://mat.virgule.info/temp/cdrom.c(...) < programme a la con fait en 5 min, ca peut ne pas marcher, mais ca marche chez moi :)
Si tu veux verifier le type de truc dans le lecteur, ca prend juste quelques lignes en plus...
-
[+] [^]Re: Savoir si un CD est présent dans le lecteur
Posté par L. R. (Jabber id, page perso, ) le 07/03/2004 à 10:04. (lien). Évalué à -1.if (argc == 2)
dev = argv[1];
else
dev = "/dev/cdrom";
C'est moi, ou ça c'est pas du C O_O ?
Enfin le premier dev je dis pas, mais dev = "/dev/cdrom" sachant que dev est un pointeur ?? Je suis pas une bête du C, mais ça me parrait louche :/--
Quand le chat regarde la tartine beurrée, le sage s'en mord les doigts.
République bananière -- Banana Republic-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Yusei () le 07/03/2004 à 11:54. (lien). Évalué à 1.Euh si ça marche. "blabla" c'est aussi un bout de texte, comme argv[1].
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par L. R. (Jabber id, page perso, ) le 07/03/2004 à 12:06. (lien). Évalué à 1.Sauf que argv[1] est une variable et qu'on pointera dessus non ?
Là on balance un texte comme ça dans un pointeur... Je comprends pas, personne pour m'expliquer plutôt que me moinsser bêtement ?--
Quand le chat regarde la tartine beurrée, le sage s'en mord les doigts.
République bananière -- Banana Republic-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Lucas Bonnet () le 07/03/2004 à 12:08. (lien). Évalué à 1.argv[1] est un pointeur vers chaine de caractère.
"bidule" est aussi un pointeur vers chaine de caractère.
machin = "bidule"; veut dire que machin prendra l'adresse de la chaine bidule, c'est pas comme a = 8. Mais tu peux faire printf("%s",machin).
Tu suis ? Je pense ne pas avoir dit de grosse connerie.-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par L. R. (Jabber id, page perso, ) le 07/03/2004 à 12:33. (lien). Évalué à 1.C'est juste que je vois pas où, justement, est cette chaîne "bidule".
Me semblait qu'on pouvait pas faire une châine comme ça en C ? J'étais habitué à des str[machin] de tous les côtés pour manipuler des chaînes, c'est pour ça que j'étais étonné.--
Quand le chat regarde la tartine beurrée, le sage s'en mord les doigts.
République bananière -- Banana Republic-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par benja () le 08/03/2004 à 07:25. (lien). Évalué à 1.Bin la chaine "/dev/cdrom" est incluse dans le segment de donnees lors de la compilation (le .db de l'asm).
L'expression "/dev/cdrom" est du type const char * et contient l'addresse de cette chaine dans le segment data du programme. Tu peux meme écrire dedans si tu veux, du moment que tu ne depasse pas la capacité.
-
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par L. R. (Jabber id, page perso, ) le 07/03/2004 à 12:52. (lien). Évalué à 1.chezmoicommecacamarchepas.org :/
lr@merlin~/tmp$ cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *truc;
truc = "Test";
printf("%s", &truc);
return 0;
}
lr@merlin~/tmp$ gcc -o test test.c
lr@merlin~/tmp$ ./test
È÷¿¿%
lr@merlin~/tmp$
Dans le doute par rapport à printf("%s", &truc); j'ai refais sans :
lr@merlin~/tmp$ cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *truc;
truc = "Test";
printf("%s", truc);
return 0;
}
lr@merlin~/tmp$ gcc -o test test.c
lr@merlin~/tmp$ ./test
lr@merlin~/tmp$
Niet nada pas de "Test" à l'horizon. J'ai omi quelque chose dans ce bout de code à la con ? Je demande qu'à apprendre, car là je vois pas comment on peut mettre une string directement dans un pointeur comme ça.--
Quand le chat regarde la tartine beurrée, le sage s'en mord les doigts.
République bananière -- Banana Republic-
[^]Re: Savoir si un CD est présent dans le lecteur
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Lucas Bonnet () le 07/03/2004 à 13:19. (lien). Évalué à 1.Le premier n'est pas bon, c'est truc tout court, puisqu'il contient déjà une adresse. Et printf va "suivre" l'adresse, pour aller afficher la chaine.
Ensuite, dans le 2ème, si tu remplaces :
printf("%s", truc);
par
printf("%s\n",truc);
Ca marche. Tout simplement parce qu'il faut vider le tampon de sortie, chose qui se fait avec \n. Si tu vides pas le tampon, rien ne garantit qu'il sera écrit. Et ici tu vois bien qu'il n'est pas écrit.
Voilà :)
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par pasBill pasGates () le 08/03/2004 à 09:26. (lien). Évalué à 2.Tu peux mettre un string dans un pointeur comme ca car le compilo le voit et alloue tout seul la memoire pour contenir le bloc(sur la stack) et met le pointeur la ou il faut.
Bref,
char *toto;
toto="hello";
C'est a peu pres identique a :
char toto[6]="hello";
Mais c'est moche et faut pas le faire.-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par L. R. (Jabber id, page perso, ) le 09/03/2004 à 06:20. (lien). Évalué à 1.Merci, c'est ce que j'essayais de comprendre. Je sais qu'on peut faire des trucs monstrueux en C c'est pour ça que j'étais étonné de cette méthode et douteux.
--
Quand le chat regarde la tartine beurrée, le sage s'en mord les doigts.
République bananière -- Banana Republic
-
-
-
-
-
-
Re: Savoir si un CD est présent dans le lecteur
- Un truc qui est pas mal aussi c'est d'aller faire un ptit tour dans le répertoire /proc : le fichier info qui donne la capacité du medium /proc/ide/hdX/capacity, faut ensuite diviser le résultat par 2048 et hop ça te donne la capacité en mo, après tu fais des testes sur la taille..
- Un autre truc, si tu as cdrtools d'installer, c'est de récupérer l'info sur la taille en faisant isoinfo -i /dev/hdX -d | grep "Volume size", ensuite il faut multiplier par 2 et diviser par 1024 et là tu retrouves le même résultat en mo :) ...
Re: Savoir si un CD est présent dans le lecteur
Comme dit plus haut, avec mount /cdrom. Ensuite tu consulte $?, si c'est égale à 0, y'a un CD dans le lecteur, sinon non.
En bash, ça donne:
#!/bin/bash
umount /cdrom 2> /dev/null # On démonte le CD au cas ou y'en aurai un de monté
mount /cdrom 2> /dev/null # On "tente" de monter le CD
if [ "$?" == "0" ]; then
echo "y'a 1 CD dans le lecteur"
else
echo "Lecteur de CDROM vide"
fi
-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Mathieu Pillard (page perso, ) le 07/03/2004 à 17:58. (lien). Évalué à 1.Oui mais non:
- ca t'oblige a mounter/demounter dans tous les sens
- tu n'es pas obligé d'avoir le droit de le faire
- ca ne marchera pas avec un truc audio
- ca ne marchera pas avec un cd-r ou autre truc dans ce genre la vierge
- ca ne marchera pas si le fs dessus est endommagé :) (bon, ok, c'est vicieux :)-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par gnujsa () le 07/03/2004 à 18:50. (lien). Évalué à 1.Bon c'est vrai, c'est pas terrible.
alors plutot ça:
#!/bin/bash
if [ -z "$(cddb-id 2>/dev/stdout | grep "error")" ]; then
echo "y'a 1 CD dans le lecteur"
else
echo "Lecteur de CDROM vide"
fi
- pas obligé de mounter/demounter dans tous les sens
- pas obliger d'être root (enfin en tous cas chez moi)
- fonctionne aussi bien avec cd de donnée que cd audio
par contre je n'est plus de CD vierge sous la main pour tester :(
et je n'ai pas de CD endommagé :)-
[^]Re: Savoir si un CD est présent dans le lecteur
Posté par Mathieu Pillard (page perso, ) le 07/03/2004 à 20:36. (lien). Évalué à 1.Moi j'ai pas cddb-id donc je prefere mon petit programme :-)
-
-
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.