/proc/scsi/scsi를 업데이트하는 프로세스는 무엇입니까?

/proc/scsi/scsi를 업데이트하는 프로세스는 무엇입니까?

우분투에서 내 하드웨어에 대한 정보를 표시하기 위해 C를 작성했습니다. 이제 OS 업데이트를 위해 파일 대신 하드웨어를 직접 쿼리하는 등 좀 더 유연하게 만드는 방법이 궁금합니다. 그래서 나는 작성된 내용을 보고 /proc/scsi/scsi동일한 작업을 수행하여 코드가 /proc/scsi/scsi 이외의 다른 것을 사용할 수 있는 unice에서도 실행되어 하드웨어 정보를 표시하는 방법을 배울 수 있다고 생각했습니다.

#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;
}

나에게 그것은 다음과 같습니다

$ 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

다른 유니스(예: bsd)에서도 작동합니까? ms-windows에서 어떻게 실행하나요? 파일 대신 하드웨어를 직접 쿼리할 수 있나요 /proc/scsi/scsi?

답변1

파일 시스템은 /proc실제가 아니며 파일처럼 보이도록 내보낸 커널 내부 데이터의 보기입니다. 이는 Linux와 Solaris(아이디어는 거기에서 뻔뻔하게 도용됨) 및 아마도 다른 Unixy 시스템에 존재합니다. 형식은 시스템에 따라 크게 달라집니다(Linux 커널 버전 간에도 크게 변경될 수도 있습니다).

실제로 하드웨어 데이터를 찾을 수 있는 중간 정도의 이식 가능한 방법은 없습니다(일부 Unices 및 이와 유사한 것들은 정말 이상한 철에서 실행될 수도 없습니다).

답변2

/proc 파일 시스템은 Linux 중심이므로 대답은 '아니오'입니다. BSD 시스템은 sysctl을 사용하여 이 정보를 얻습니다. 제 생각에는 Windows의 경우 이 그룹이 질문하기에 가장 좋은 그룹은 아닙니다. :)

관련 정보