Linux
哪個程序更新 /proc/scsi/scsi?
我寫了 C 來顯示關於我在 ubuntu 上的硬體資訊。現在我想知道如何使它更靈活,例如直接查詢硬體而不是作業系統更新的文件。所以我認為我可以查看寫入的內容
/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
它可以在其他 unices 例如 bsd 上執行嗎?如何讓它在 ms-windows 上執行?我可以直接查詢硬體而不是文件
/proc/scsi/scsi
嗎?
/proc
文件系統不是真實的,它是核心內部數據的視圖,導出為看起來像文件。它存在於 Linux 和 Solaris(從那裡無恥地竊取了這個想法),也許還有其他 Unixy 系統。該格式非常依賴於系統(甚至在 Linux 核心版本之間發生了很大變化)。確實沒有任何半便攜的方式來查找硬體數據(而且不可能,一些 Unices 和相似的東西在非常奇怪的鐵上執行)。
/proc 文件系統是以 Linux 為中心的,所以答案是否定的。BSD 系統使用 sysctl 來獲取此類資訊。至於 Windows,我認為這不是最好的問題。:)