/proc/scsi/scsiを更新するプロセスは何ですか?

/proc/scsi/scsiを更新するプロセスは何ですか?

Ubuntuで私のハードウェアに関する情報を表示するために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の場合、このグループが質問するのに最適なグループではありません。 :)

関連情報