Abrindo e fechando a bandeja do cd.

Publicado por fechado 04/02/2008

[ Hits: 14.003 ]

Download abrirfechar.c




Um simples script voltado para estudo: só abrir e fechar o cdrom do pc.

  



Esconder código-fonte

#include <stdio.h>
#include <stdlib.h>
 

int main(int argc, char *argv[]) {
 int x=1,opt;
 while (x) {
  system("clear");
  printf("\n>>> Digite a opcao desejada: 1 para abrir a bandeja, 2 para fechar.: ");
  scanf("%i",opt);
  if (opt==1)  { system("eject"); }
  else if (opt==2) { system("eject -t"); }
  else { printf("\nOpcao invalida!\n");
  printf("\nDigite 1 para continuar ou outro numero para sair: ");
  scanf("%i",x);
  } 
 }
 return 0;
}

Scripts recomendados

pontex1.c - Ponteiro

Antecessor e sucessor

Gerador de sequência numérica

FATORIAL

Função de hash simples em C


  

Comentários
[1] Comentário enviado por removido em 04/02/2008 - 14:15h

Parabéns, realmente muito útil, mas tenho algumas correções a fazer.

1. Variáveis inteiras costumam ser %d, você colocou %i, pode funcionar, mas alguns compiladores não aceitam (o gcc aceita).
2. Você não colocou o & na leitura de dados, com o scanf, o resultado será um erro de segmentação.

Aqui está a correção feita por mim. Adaptada para o compilador gcc.

-----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>


int main() {
int x=1,opt;
while (x) {
system("clear");
printf("\n>>> Digite a opcao desejada: 1 para abrir a bandeja, 2 para fechar.: ");
scanf("%i",&opt);
if (opt==1) { system("eject"); }
else if (opt==2) { system("eject -t"); }
else { printf("\nOpcao invalida!\n");
printf("\nDigite 1 para continuar ou outro numero para sair: ");
scanf("%i",&x);
}

}
return(0);
}

[2] Comentário enviado por emilioeiji em 04/02/2008 - 14:51h

Bem observado Weslly Potter.

[3] Comentário enviado por h4shbang em 06/02/2008 - 06:43h

massa,

[4] Comentário enviado por joserribeirojuni em 06/02/2008 - 17:12h

Mais usa uma função do sistema system("eject")
Tem como fazer sem usar essa função ?
Abração.

[5] Comentário enviado por gabrield em 11/02/2008 - 11:29h

Tem como fazer sim sem usar a chamada system(), usando a biblioteca de manipulacao de cdrom do Linux. ex:

#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/cdrom.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <unistd.h>

#define CDDEVICE "/dev/cdrom"

int main(int argc, char *argv[]){

int cdrom, opt,x =1;
cdrom = open(CDDEVICE, O_RDONLY | O_NONBLOCK);
if(cdrom < 0){
fprintf(stderr, "Error: %s\n", strerror(errno));
exit(-1);
}
while (x){
printf("\e[H\e[2J\n");
printf("\n>>> Digite a opcao desejada: 1 para abrir a bandeja, 2 para fechar.: ");
scanf("%i",&opt);
if (opt==1) {
ioctl(cdrom, CDROMEJECT, 0);
}
else if (opt==2) {
ioctl(cdrom, CDROMCLOSETRAY, 0); }
else { printf("\nOpcao invalida!\n");
printf("\nDigite 1 para continuar ou outro numero para sair: ");
scanf("%i",&x);
}

}
return(0);
}

[6] Comentário enviado por gabrield em 11/02/2008 - 12:59h

Obs:

a chamada que era feita antes para limpar o terminal usando o clear "system("clear");" , pode e deve ser substituida por "printf("\e[H\e[2J\n");" que tem a mesma funcionalidade e nao depene de nada externo;


[7] Comentário enviado por alepunk6 em 30/04/2008 - 15:02h

Oi povo, tdo bem??

Olha soh, eu to começando a aprender c agora e to usando o Dev-c como compilador...eu tentei compila o código pra abrir e fechar a bandeja do cd mas ele não ta aceitando a função system ("eject")...

Será que vcs podem me dar uma ajuda???

valews!!!

[8] Comentário enviado por doradu em 29/01/2010 - 12:42h

estou usando um WinXP e não funciou

só funciona em Linux?

[9] Comentário enviado por danltmz em 20/03/2010 - 15:23h

Sim, só funciona em Linux.
Ao usuário de windows ai em cima, não use o Dev-C, está descontinuado a anos e é velho, tem mtos bugs e da muitos erros, melhor usar MingW.

[10] Comentário enviado por CaioMGA em 02/06/2010 - 23:57h

O difícil é parar de abrir e fechar a gavetinha...


AH! Viciei!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts