Que processo atualiza / proc / scsi / scsi?

0

Eu escrevi C que exibe informações sobre o meu hardware no Ubuntu. Agora eu me pergunto como posso torná-lo mais flexível, como consultar o hardware diretamente em vez do arquivo as atualizações do sistema operacional. Então eu acho que posso olhar o que escreve para /proc/scsi/scsi e fazer o mesmo para que este código possa funcionar também em unices que poderiam ter outro método além de um / proc / scsi / scsi e assim eu posso aprender como exibir informações de hardware.

#include <stdio.h>
#include <stdlib.h>
int main()
{
   char ch, file_name[25] = "/proc/scsi/scsi";
   FILE *fp; 
   fp = fopen(file_name,"r"); // read mode 
   if( fp == NULL )
   {
      perror("Error while opening the file.\n");
      exit(EXIT_FAILURE);
   } 
   printf("The contents of %s file are :\n", file_name); 
   while( ( ch = fgetc(fp) ) != EOF )
      printf("%c",ch); 
   fclose(fp);
   return 0;
}

Para mim, parecia assim

$ cc driveinfo.c;./a.out 
The contents of /proc/scsi/scsi file are :
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD2500JS-75N Rev: 10.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST3250824AS      Rev: 3.AD
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: TSSTcorp Model: DVD+-RW TS-H653A Rev: D300
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: Optiarc  Model: DVD-ROM DDU1681S Rev: 102A
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: Lexar    Model: USB Flash Drive  Rev: 1100
  Type:   Direct-Access                    ANSI  SCSI revision: 00
Host: scsi5 Channel: 00 Id: 00 Lun: 00
  Vendor: WD       Model: 5000AAKB Externa Rev: l108
  Type:   Direct-Access                    ANSI  SCSI revision: 00

Pode ser executado em outros unices, por exemplo? bsd? Como posso executá-lo em ms-windows? Posso consultar o hardware diretamente em vez do arquivo /proc/scsi/scsi ?

    
por Niklas Rosencrantz 06.03.2013 / 14:55

2 respostas

2

O sistema de arquivos /proc não é real, é uma visualização dos dados internos do kernel, exportados para se parecerem com arquivos. Ele existe no Linux e no Solaris (de onde a idéia foi descaradamente roubada), e talvez outros sistemas Unixy. O formato é muito dependente do sistema (e até mudou substancialmente entre as versões do kernel Linux).

Realmente não existe nenhuma maneira portátil de descobrir dados de hardware (e não pode ser, alguns Unices e sós funcionam com um ferro bastante estranho).

    
por 06.03.2013 / 15:25
2

O sistema de arquivos / proc é centrado no Linux, então a resposta é não. Os sistemas BSD usam sysctl para esse tipo de informação. Quanto ao Windows, este não é o melhor grupo para perguntar, methinks. :)

    
por 06.03.2013 / 14:59